@draig/lexis-two 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.agents/plugins/marketplace.json +21 -0
  2. package/.claude-plugin/marketplace.json +29 -0
  3. package/.claude-plugin/plugin.json +9 -0
  4. package/.clinerules/lexis-two.md +163 -0
  5. package/.codex-plugin/plugin.json +31 -0
  6. package/.cursor/rules/lexis-two.mdc +169 -0
  7. package/.env.example +8 -0
  8. package/.github/FUNDING.yml +1 -0
  9. package/.github/copilot-instructions.md +47 -0
  10. package/.github/plugin/marketplace.json +20 -0
  11. package/.github/plugin/plugin.json +16 -0
  12. package/.github/workflows/deploy-site.yml +53 -0
  13. package/.github/workflows/test.yml +29 -0
  14. package/.kiro/steering/lexis-two.md +167 -0
  15. package/.nojekyll +0 -0
  16. package/.opencode/command/lexis-two-audit.md +5 -0
  17. package/.opencode/command/lexis-two-debt.md +5 -0
  18. package/.opencode/command/lexis-two-help.md +5 -0
  19. package/.opencode/command/lexis-two-plan.md +5 -0
  20. package/.opencode/command/lexis-two-review.md +5 -0
  21. package/.opencode/command/lexis-two-security.md +5 -0
  22. package/.opencode/command/lexis-two.md +5 -0
  23. package/.opencode/plugins/lexis-two.mjs +74 -0
  24. package/.windsurf/rules/lexis-two.md +163 -0
  25. package/AGENTS.md +163 -0
  26. package/AUDIT.md +74 -0
  27. package/CNAME +1 -0
  28. package/LICENSE +23 -0
  29. package/README.md +301 -0
  30. package/SPECXIS.md +576 -0
  31. package/assets/benchmark-3model.svg +21 -0
  32. package/assets/lexis-two-complete.webp +0 -0
  33. package/assets/lexis-two-nobg.png +0 -0
  34. package/assets/logo.png +0 -0
  35. package/assets/social-preview.png +0 -0
  36. package/benchmarks/README.md +114 -0
  37. package/benchmarks/arms/baseline.js +2 -0
  38. package/benchmarks/arms/caveman-SKILL.md +67 -0
  39. package/benchmarks/arms/caveman.js +8 -0
  40. package/benchmarks/arms/lexis-two.js +10 -0
  41. package/benchmarks/arms/ponytail.js +6 -0
  42. package/benchmarks/behavior.js +58 -0
  43. package/benchmarks/behavior.yaml +40 -0
  44. package/benchmarks/benchmark-local.py +156 -0
  45. package/benchmarks/benchmark-opencode-go.js +294 -0
  46. package/benchmarks/correctness.js +294 -0
  47. package/benchmarks/lib/aggregate-opencode-go.js +103 -0
  48. package/benchmarks/lib/load-env.js +31 -0
  49. package/benchmarks/lib/opencode-go-client.js +151 -0
  50. package/benchmarks/loc.js +13 -0
  51. package/benchmarks/opencode-go-models.json +31 -0
  52. package/benchmarks/promptfooconfig.yaml +41 -0
  53. package/benchmarks/prompts.json +15 -0
  54. package/benchmarks/render-opencode-go-report.js +28 -0
  55. package/benchmarks/results/2026-06-15-llama3.2-local.md +76 -0
  56. package/benchmarks/results/2026-06-16-opencode-go.md +56 -0
  57. package/benchmarks/results/opencode-go-2026-06-16-report.html +226 -0
  58. package/benchmarks/results/opencode-go-2026-06-16.json +1339 -0
  59. package/commands/lexis-two-audit.toml +3 -0
  60. package/commands/lexis-two-debt.toml +3 -0
  61. package/commands/lexis-two-help.toml +3 -0
  62. package/commands/lexis-two-plan.toml +3 -0
  63. package/commands/lexis-two-review.toml +3 -0
  64. package/commands/lexis-two-security.toml +3 -0
  65. package/commands/lexis-two.toml +3 -0
  66. package/docs/assets/lexis-two-nobg.png +0 -0
  67. package/docs/assets/logo.png +0 -0
  68. package/docs/assets/logo.svg +4 -0
  69. package/docs/portability.md +147 -0
  70. package/docs/site.md +52 -0
  71. package/examples/api-endpoint.md +68 -0
  72. package/examples/caching.md +74 -0
  73. package/examples/date-picker.md +48 -0
  74. package/examples/email-validation.md +51 -0
  75. package/examples/sorting.md +42 -0
  76. package/gemini-extension.json +7 -0
  77. package/hooks/copilot-hooks.json +21 -0
  78. package/hooks/hooks.json +31 -0
  79. package/hooks/lexis-two-activate.js +72 -0
  80. package/hooks/lexis-two-config.js +101 -0
  81. package/hooks/lexis-two-instructions.js +126 -0
  82. package/hooks/lexis-two-mode-tracker.js +55 -0
  83. package/hooks/lexis-two-runtime.js +50 -0
  84. package/hooks/lexis-two-statusline.ps1 +19 -0
  85. package/hooks/lexis-two-statusline.sh +11 -0
  86. package/opencode.json +4 -0
  87. package/package.json +31 -0
  88. package/pi-extension/index.js +161 -0
  89. package/pi-extension/package.json +8 -0
  90. package/pi-extension/test/extension.test.js +89 -0
  91. package/pi-extension/test/helpers.test.js +35 -0
  92. package/scripts/check-rule-copies.js +82 -0
  93. package/site/astro.config.mjs +18 -0
  94. package/site/package-lock.json +4913 -0
  95. package/site/package.json +14 -0
  96. package/site/public/CNAME +1 -0
  97. package/site/public/assets/lexis-two-nobg.png +0 -0
  98. package/site/public/assets/logo.png +0 -0
  99. package/site/public/assets/logo.svg +4 -0
  100. package/site/public/robots.txt +4 -0
  101. package/site/src/components/Adapt.astro +33 -0
  102. package/site/src/components/Benchmarks.astro +232 -0
  103. package/site/src/components/Commands.astro +33 -0
  104. package/site/src/components/Ecosystem.astro +30 -0
  105. package/site/src/components/Example.astro +77 -0
  106. package/site/src/components/Footer.astro +28 -0
  107. package/site/src/components/Header.astro +87 -0
  108. package/site/src/components/Hero.astro +58 -0
  109. package/site/src/components/Home.astro +46 -0
  110. package/site/src/components/Hosts.astro +62 -0
  111. package/site/src/components/Install.astro +143 -0
  112. package/site/src/components/LanguageSwitcher.astro +82 -0
  113. package/site/src/components/Philosophy.astro +23 -0
  114. package/site/src/components/Stacks.astro +33 -0
  115. package/site/src/components/Suggested.astro +39 -0
  116. package/site/src/data/opencode-go-benchmark.json +230 -0
  117. package/site/src/i18n/en.ts +155 -0
  118. package/site/src/i18n/es.ts +158 -0
  119. package/site/src/i18n/index.ts +14 -0
  120. package/site/src/layouts/Layout.astro +114 -0
  121. package/site/src/pages/benchmarks.astro +4 -0
  122. package/site/src/pages/es/benchmarks.astro +4 -0
  123. package/site/src/pages/es/index.astro +10 -0
  124. package/site/src/pages/index.astro +10 -0
  125. package/site/src/styles/global.css +780 -0
  126. package/site/tsconfig.json +3 -0
  127. package/skills/lexis-two/SKILL.md +109 -0
  128. package/skills/lexis-two-audit/SKILL.md +21 -0
  129. package/skills/lexis-two-debt/SKILL.md +22 -0
  130. package/skills/lexis-two-plan/SKILL.md +25 -0
  131. package/skills/lexis-two-review/SKILL.md +24 -0
  132. package/skills/lexis-two-security/SKILL.md +24 -0
  133. package/tests/behavior.test.js +80 -0
  134. package/tests/commands.test.js +40 -0
  135. package/tests/copilot-plugin.test.js +33 -0
  136. package/tests/correctness.test.js +191 -0
  137. package/tests/gemini-extension.test.js +78 -0
  138. package/tests/hooks-windows.test.js +48 -0
  139. package/tests/hooks.test.js +177 -0
  140. package/tests/opencode-plugin.test.js +64 -0
@@ -0,0 +1,62 @@
1
+ ---
2
+ interface Props {
3
+ hosts: {
4
+ title: string;
5
+ subtitle: string;
6
+ headHost: string;
7
+ headLevel: string;
8
+ headEntry: string;
9
+ rows: readonly {
10
+ host: string;
11
+ level: string;
12
+ entry: string;
13
+ }[];
14
+ levelFull: string;
15
+ levelSoon: string;
16
+ levelRules: string;
17
+ };
18
+ }
19
+
20
+ const { hosts } = Astro.props;
21
+ ---
22
+
23
+ <section id="hosts">
24
+ <div class="wrap">
25
+ <div class="section-head">
26
+ <h2>{hosts.title}</h2>
27
+ <p set:html={hosts.subtitle} />
28
+ </div>
29
+ <div class="table-wrap">
30
+ <table>
31
+ <thead>
32
+ <tr>
33
+ <th scope="col">{hosts.headHost}</th>
34
+ <th scope="col">{hosts.headLevel}</th>
35
+ <th scope="col">{hosts.headEntry}</th>
36
+ </tr>
37
+ </thead>
38
+ <tbody>
39
+ {
40
+ hosts.rows.map((row) => (
41
+ <tr>
42
+ <td>{row.host}</td>
43
+ <td>
44
+ <span class:list={["pill", row.level]}>
45
+ {row.level === "full"
46
+ ? hosts.levelFull
47
+ : row.level === "soon"
48
+ ? hosts.levelSoon
49
+ : hosts.levelRules}
50
+ </span>
51
+ </td>
52
+ <td>
53
+ <code>{row.entry}</code>
54
+ </td>
55
+ </tr>
56
+ ))
57
+ }
58
+ </tbody>
59
+ </table>
60
+ </div>
61
+ </div>
62
+ </section>
@@ -0,0 +1,143 @@
1
+ ---
2
+ interface Props {
3
+ install: {
4
+ title: string;
5
+ subtitle: string;
6
+ tabOpencode: string;
7
+ tabCursor: string;
8
+ tabClone: string;
9
+ };
10
+ }
11
+
12
+ const { install } = Astro.props;
13
+ ---
14
+
15
+ <section id="install">
16
+ <div class="wrap">
17
+ <div class="section-head">
18
+ <h2>{install.title}</h2>
19
+ <p>{install.subtitle}</p>
20
+ </div>
21
+ <div
22
+ class="install-tabs"
23
+ role="tablist"
24
+ aria-label="Install instructions"
25
+ >
26
+ <button
27
+ type="button"
28
+ class="tab-btn"
29
+ role="tab"
30
+ aria-selected="true"
31
+ aria-controls="tab-opencode-npm"
32
+ id="tab-btn-opencode-npm"
33
+ >
34
+ OpenCode (npm)
35
+ </button>
36
+ <button
37
+ type="button"
38
+ class="tab-btn"
39
+ role="tab"
40
+ aria-selected="false"
41
+ aria-controls="tab-opencode"
42
+ id="tab-btn-opencode"
43
+ >
44
+ OpenCode (Local)
45
+ </button>
46
+ <button
47
+ type="button"
48
+ class="tab-btn"
49
+ role="tab"
50
+ aria-selected="false"
51
+ aria-controls="tab-cursor"
52
+ id="tab-btn-cursor"
53
+ >
54
+ {install.tabCursor}
55
+ </button>
56
+ <button
57
+ type="button"
58
+ class="tab-btn"
59
+ role="tab"
60
+ aria-selected="false"
61
+ aria-controls="tab-clone"
62
+ id="tab-btn-clone"
63
+ >
64
+ {install.tabClone}
65
+ </button>
66
+ </div>
67
+ <div
68
+ id="tab-opencode-npm"
69
+ class="tab-panel active"
70
+ role="tabpanel"
71
+ aria-labelledby="tab-btn-opencode-npm"
72
+ >
73
+ <pre><code set:html={`# Add to your opencode.json
74
+ {
75
+ "plugin": ["@nitdraig/lexis-two"]
76
+ }
77
+
78
+ # Optional: Copy slash commands globally to use them anywhere
79
+ mkdir -p ~/.config/opencode/commands
80
+ cp -r .opencode/command/lexis-two*.md ~/.config/opencode/commands/`} /></pre>
81
+ </div>
82
+ <div
83
+ id="tab-opencode"
84
+ class="tab-panel"
85
+ role="tabpanel"
86
+ aria-labelledby="tab-btn-opencode"
87
+ hidden
88
+ >
89
+ <pre><code set:html={`git clone https://github.com/nitdraig/lexis-two.git ~/lexis-two
90
+
91
+ # opencode.json
92
+ {
93
+ "plugin": ["~/lexis-two/.opencode/plugins/lexis-two.mjs"],
94
+ "instructions": ["~/lexis-two/AGENTS.md"]
95
+ }`} /></pre>
96
+ </div>
97
+ <div
98
+ id="tab-cursor"
99
+ class="tab-panel"
100
+ role="tabpanel"
101
+ aria-labelledby="tab-btn-cursor"
102
+ hidden
103
+ >
104
+ <pre><code>git clone https://github.com/nitdraig/lexis-two.git ~/lexis-two
105
+ cp ~/lexis-two/.cursor/rules/lexis-two.mdc .cursor/rules/lexis-two.mdc
106
+
107
+ # Or globally:
108
+ cp ~/lexis-two/.cursor/rules/lexis-two.mdc ~/.cursor/rules/lexis-two.mdc</code></pre>
109
+ </div>
110
+ <div
111
+ id="tab-clone"
112
+ class="tab-panel"
113
+ role="tabpanel"
114
+ aria-labelledby="tab-btn-clone"
115
+ hidden
116
+ >
117
+ <pre><code set:html={`git clone https://github.com/nitdraig/lexis-two.git ~/lexis-two
118
+
119
+ # More hosts: docs/portability.md in the repo
120
+ # Default mode: LEXIS_TWO_DEFAULT_MODE=full
121
+ # Or ~/.config/lexis-two/config.json → { "defaultMode": "full" }`} /></pre>
122
+ </div>
123
+ </div>
124
+ </section>
125
+
126
+ <script>
127
+ document.querySelectorAll(".tab-btn").forEach(function (btn) {
128
+ btn.addEventListener("click", function () {
129
+ var target = btn.getAttribute("aria-controls");
130
+ document.querySelectorAll(".tab-btn").forEach(function (b) {
131
+ b.setAttribute("aria-selected", "false");
132
+ });
133
+ document.querySelectorAll(".tab-panel").forEach(function (p) {
134
+ p.classList.remove("active");
135
+ p.hidden = true;
136
+ });
137
+ btn.setAttribute("aria-selected", "true");
138
+ var panel = document.getElementById(target!);
139
+ panel!.classList.add("active");
140
+ panel!.hidden = false;
141
+ });
142
+ });
143
+ </script>
@@ -0,0 +1,82 @@
1
+ ---
2
+ import type { Locale } from "../i18n/index.js";
3
+
4
+ interface Props {
5
+ locale: Locale;
6
+ }
7
+
8
+ const { locale } = Astro.props;
9
+ const otherLocale: Locale = locale === "en" ? "es" : "en";
10
+ const otherLabel = locale === "en" ? "ES" : "EN";
11
+
12
+ const currentPath = Astro.url.pathname;
13
+ let targetPath: string;
14
+ if (locale === "en") {
15
+ targetPath = `/es${currentPath}`;
16
+ } else {
17
+ targetPath = currentPath.replace(/^\/es/, "") || "/";
18
+ }
19
+ ---
20
+
21
+ <a
22
+ href={targetPath}
23
+ class="lang-switch"
24
+ aria-label={locale === "en" ? "Cambiar a espanol" : "Switch to English"}
25
+ title={locale === "en" ? "Espanol" : "English"}
26
+ >
27
+ <svg
28
+ width="16"
29
+ height="16"
30
+ viewBox="0 0 24 24"
31
+ fill="none"
32
+ stroke="currentColor"
33
+ stroke-width="2"
34
+ stroke-linecap="round"
35
+ stroke-linejoin="round"
36
+ aria-hidden="true"
37
+ >
38
+ <circle cx="12" cy="12" r="10" />
39
+ <path d="M2 12h20" />
40
+ <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" />
41
+ </svg>
42
+ <span>{otherLabel}</span>
43
+ </a>
44
+
45
+ <style>
46
+ .lang-switch {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ gap: 0.35rem;
50
+ font-family: var(--font-mono);
51
+ font-size: 0.75rem;
52
+ font-weight: 600;
53
+ padding: 0.4rem 0.7rem;
54
+ border: 1px solid var(--border-bright);
55
+ border-radius: 999px;
56
+ background: var(--bg-elevated);
57
+ color: var(--text-muted);
58
+ text-decoration: none;
59
+ transition:
60
+ border-color 0.15s ease,
61
+ color 0.15s ease,
62
+ background 0.15s ease;
63
+ white-space: nowrap;
64
+ }
65
+
66
+ .lang-switch:hover {
67
+ border-color: var(--accent-dim);
68
+ color: var(--accent);
69
+ background: var(--accent-glow);
70
+ }
71
+
72
+ .lang-switch svg {
73
+ flex-shrink: 0;
74
+ }
75
+
76
+ @media (max-width: 767px) {
77
+ .lang-switch {
78
+ margin-left: 0;
79
+ margin-top: 0.25rem;
80
+ }
81
+ }
82
+ </style>
@@ -0,0 +1,23 @@
1
+ ---
2
+ interface Props {
3
+ philosophy: {
4
+ title: string;
5
+ subtitle: string;
6
+ rungs: readonly string[];
7
+ };
8
+ }
9
+
10
+ const { philosophy } = Astro.props;
11
+ ---
12
+
13
+ <section id="philosophy">
14
+ <div class="wrap">
15
+ <div class="section-head">
16
+ <h2>{philosophy.title}</h2>
17
+ <p>{philosophy.subtitle}</p>
18
+ </div>
19
+ <ol class="ladder">
20
+ {philosophy.rungs.map((rung) => <li>{rung}</li>)}
21
+ </ol>
22
+ </div>
23
+ </section>
@@ -0,0 +1,33 @@
1
+ ---
2
+ interface Props {
3
+ stacks: {
4
+ title: string;
5
+ subtitle: string;
6
+ items: readonly {
7
+ name: string;
8
+ desc: string;
9
+ }[];
10
+ };
11
+ }
12
+
13
+ const { stacks } = Astro.props;
14
+ ---
15
+
16
+ <section id="stacks">
17
+ <div class="wrap">
18
+ <div class="section-head">
19
+ <h2>{stacks.title}</h2>
20
+ <p>{stacks.subtitle}</p>
21
+ </div>
22
+ <div class="stacks-grid">
23
+ {
24
+ stacks.items.map((stack) => (
25
+ <div class="stack-card">
26
+ <h3>{stack.name}</h3>
27
+ <p>{stack.desc}</p>
28
+ </div>
29
+ ))
30
+ }
31
+ </div>
32
+ </div>
33
+ </section>
@@ -0,0 +1,39 @@
1
+ ---
2
+ interface Props {
3
+ suggested: {
4
+ title: string;
5
+ subtitle: string;
6
+ items: readonly {
7
+ name: string;
8
+ url: string;
9
+ desc: string;
10
+ }[];
11
+ };
12
+ }
13
+
14
+ const { suggested } = Astro.props;
15
+ ---
16
+
17
+ <section id="suggested">
18
+ <div class="wrap">
19
+ <div class="section-head">
20
+ <h2>{suggested.title}</h2>
21
+ <p>{suggested.subtitle}</p>
22
+ </div>
23
+ <div class="suggested-list">
24
+ {
25
+ suggested.items.map((item) => (
26
+ <a
27
+ href={item.url}
28
+ class="suggested-card"
29
+ target="_blank"
30
+ rel="noopener noreferrer"
31
+ >
32
+ <h3>{item.name}</h3>
33
+ <p>{item.desc}</p>
34
+ </a>
35
+ ))
36
+ }
37
+ </div>
38
+ </div>
39
+ </section>
@@ -0,0 +1,230 @@
1
+ {
2
+ "source": "opencode-go-2026-06-16.json",
3
+ "date": "2026-06-16",
4
+ "repeat": 3,
5
+ "models": [
6
+ {
7
+ "id": "kimi-k2.6",
8
+ "label": "Kimi K2.6",
9
+ "locByArmTask": {
10
+ "baseline": {
11
+ "email": 46,
12
+ "debounce": 63,
13
+ "csv-sum": 18,
14
+ "countdown": 413,
15
+ "rate-limit": 62
16
+ },
17
+ "lexis-two": {
18
+ "email": 13,
19
+ "debounce": 10,
20
+ "csv-sum": 4,
21
+ "countdown": 13,
22
+ "rate-limit": 23
23
+ }
24
+ },
25
+ "timeByArmTask": {
26
+ "baseline": {
27
+ "email": 14.996,
28
+ "debounce": 6.997,
29
+ "csv-sum": 5.53,
30
+ "countdown": 22.661,
31
+ "rate-limit": 9.316
32
+ },
33
+ "lexis-two": {
34
+ "email": 7.944,
35
+ "debounce": 7.106,
36
+ "csv-sum": 5.982,
37
+ "countdown": 13.821,
38
+ "rate-limit": 18.117
39
+ }
40
+ },
41
+ "correctByArm": {
42
+ "baseline": {
43
+ "pass": 12,
44
+ "total": 15
45
+ },
46
+ "lexis-two": {
47
+ "pass": 12,
48
+ "total": 15
49
+ }
50
+ },
51
+ "totals": {
52
+ "baselineLoc": 602,
53
+ "lexisLoc": 63,
54
+ "reductionPct": 90,
55
+ "baselineTimeSec": 59.5,
56
+ "lexisTimeSec": 53
57
+ }
58
+ },
59
+ {
60
+ "id": "deepseek-v4-pro",
61
+ "label": "DeepSeek V4",
62
+ "locByArmTask": {
63
+ "baseline": {
64
+ "email": 36,
65
+ "debounce": 61,
66
+ "csv-sum": 25,
67
+ "countdown": 113,
68
+ "rate-limit": 53
69
+ },
70
+ "lexis-two": {
71
+ "email": 9,
72
+ "debounce": 12,
73
+ "csv-sum": 4,
74
+ "countdown": 12,
75
+ "rate-limit": 20
76
+ }
77
+ },
78
+ "timeByArmTask": {
79
+ "baseline": {
80
+ "email": 37.21,
81
+ "debounce": 21.122,
82
+ "csv-sum": 10.365,
83
+ "countdown": 33.662,
84
+ "rate-limit": 31.551
85
+ },
86
+ "lexis-two": {
87
+ "email": 68.671,
88
+ "debounce": 16.821,
89
+ "csv-sum": 25.552,
90
+ "countdown": 45.493,
91
+ "rate-limit": 47.007
92
+ }
93
+ },
94
+ "correctByArm": {
95
+ "baseline": {
96
+ "pass": 14,
97
+ "total": 15
98
+ },
99
+ "lexis-two": {
100
+ "pass": 13,
101
+ "total": 15
102
+ }
103
+ },
104
+ "totals": {
105
+ "baselineLoc": 288,
106
+ "lexisLoc": 57,
107
+ "reductionPct": 80,
108
+ "baselineTimeSec": 133.9,
109
+ "lexisTimeSec": 203.5
110
+ }
111
+ },
112
+ {
113
+ "id": "qwen3.7-max",
114
+ "label": "Qwen3.7 Max",
115
+ "locByArmTask": {
116
+ "baseline": {
117
+ "email": 39,
118
+ "debounce": 48,
119
+ "csv-sum": 19,
120
+ "countdown": 124,
121
+ "rate-limit": 40
122
+ },
123
+ "lexis-two": {
124
+ "email": 14,
125
+ "debounce": 9,
126
+ "csv-sum": 4,
127
+ "countdown": 10,
128
+ "rate-limit": 17
129
+ }
130
+ },
131
+ "timeByArmTask": {
132
+ "baseline": {
133
+ "email": 58.608,
134
+ "debounce": 32.691,
135
+ "csv-sum": 26.66,
136
+ "countdown": 52.281,
137
+ "rate-limit": 42.698
138
+ },
139
+ "lexis-two": {
140
+ "email": 39.348,
141
+ "debounce": 27.973,
142
+ "csv-sum": 26.696,
143
+ "countdown": 38.458,
144
+ "rate-limit": 39.445
145
+ }
146
+ },
147
+ "correctByArm": {
148
+ "baseline": {
149
+ "pass": 12,
150
+ "total": 15
151
+ },
152
+ "lexis-two": {
153
+ "pass": 13,
154
+ "total": 15
155
+ }
156
+ },
157
+ "totals": {
158
+ "baselineLoc": 270,
159
+ "lexisLoc": 54,
160
+ "reductionPct": 80,
161
+ "baselineTimeSec": 212.9,
162
+ "lexisTimeSec": 171.9
163
+ }
164
+ },
165
+ {
166
+ "id": "minimax-m3",
167
+ "label": "MiniMax M3",
168
+ "locByArmTask": {
169
+ "baseline": {
170
+ "email": 55,
171
+ "debounce": 66,
172
+ "csv-sum": 33,
173
+ "countdown": 112,
174
+ "rate-limit": 59
175
+ },
176
+ "lexis-two": {
177
+ "email": 9,
178
+ "debounce": 10,
179
+ "csv-sum": 4,
180
+ "countdown": 18,
181
+ "rate-limit": 15
182
+ }
183
+ },
184
+ "timeByArmTask": {
185
+ "baseline": {
186
+ "email": 13.415,
187
+ "debounce": 12.657,
188
+ "csv-sum": 6.729,
189
+ "countdown": 12.771,
190
+ "rate-limit": 14.89
191
+ },
192
+ "lexis-two": {
193
+ "email": 6.683,
194
+ "debounce": 3.81,
195
+ "csv-sum": 2.563,
196
+ "countdown": 4.428,
197
+ "rate-limit": 4.817
198
+ }
199
+ },
200
+ "correctByArm": {
201
+ "baseline": {
202
+ "pass": 11,
203
+ "total": 15
204
+ },
205
+ "lexis-two": {
206
+ "pass": 15,
207
+ "total": 15
208
+ }
209
+ },
210
+ "totals": {
211
+ "baselineLoc": 325,
212
+ "lexisLoc": 56,
213
+ "reductionPct": 83,
214
+ "baselineTimeSec": 60.5,
215
+ "lexisTimeSec": 22.3
216
+ }
217
+ }
218
+ ],
219
+ "tasks": [
220
+ "email",
221
+ "debounce",
222
+ "csv-sum",
223
+ "countdown",
224
+ "rate-limit"
225
+ ],
226
+ "arms": [
227
+ "baseline",
228
+ "lexis-two"
229
+ ]
230
+ }