sigrank 1.0.25 → 1.0.26

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.
@@ -60,15 +60,10 @@ export {
60
60
  * The four raw token pillars → the cascade.
61
61
  *
62
62
  * Object-signature wrapper around the canonical `@sigrank/cascade` cascade()
63
- * (which takes positional args). Accepts null for cacheCreate/cacheRead
64
- * (unavailable cache) and passes null through to tteop-spec via cascade.
65
- * Re-attaches the `mode` field via detectMode() so the 20+ call sites in
66
- * this repo that read `result.mode` keep working.
63
+ * (which takes positional args). Re-attaches the `mode` field via detectMode()
64
+ * so the 20+ call sites in this repo that read `result.mode` keep working.
67
65
  */
68
66
  export function cascade({ input, output, cacheCreate, cacheRead }) {
69
- // Pass null through to cascade (→ tteop-spec) for canonical null semantics.
70
- // detectMode receives the raw values (Number(null) = 0, which is fine for
71
- // mode classification).
72
67
  const result = cascadeCanonical(input, output, cacheCreate, cacheRead);
73
68
  // Re-attach mode — the canonical package intentionally omits it (mode is a
74
69
  // presentation-layer concern, not canonical math).
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/anthropics/mcpb/main/schemas/mcpb-manifest-v0.4.schema.json",
3
3
  "manifest_version": "0.4",
4
4
  "name": "sigrank",
5
- "version": "1.0.24",
5
+ "version": "1.0.25",
6
6
  "description": "Ranks AI coding operators by token cascade efficiency (Yield = cache_read \u00d7 output / input\u00b2). 25 tools including SigRank Standard record, yield calculation, local token usage pulls, signed submission, and tokscale-powered analytics (market share, developer profiles, model trends, cost analysis, device profiles, MCP usage, competitive intelligence). Privacy-first: runs locally, only four token counts leave the machine.",
7
7
  "author": {
8
8
  "name": "SunrisesIllNeverSee",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigrank",
3
- "version": "1.0.25",
3
+ "version": "1.0.26",
4
4
  "author": "SunrisesIllNeverSee (https://github.com/SunrisesIllNeverSee)",
5
5
  "description": "Upsilon measurement engine distributed through the sigrank CLI/MCP compatibility package, with SigRank public leaderboard tools.",
6
6
  "mcpName": "io.github.SunrisesIllNeverSee/sigrank-mcp",
@@ -125,15 +125,21 @@ export async function handleGetSigRankStandardRecord(args) {
125
125
  const cacheWrite = tokenCount(args?.cache_write, "cache_write", false);
126
126
  const cacheRead = tokenCount(args?.cache_read, "cache_read", false);
127
127
 
128
- // Pass null through to cascade (→ tteop-spec) so canonical null semantics
129
- // apply directly. Passing 0 would produce 0-valued metrics instead of null,
130
- // losing the unavailable/zero distinction. No manual null override needed.
131
128
  const c = cascade({
132
129
  input,
133
130
  output,
134
- cacheCreate: cacheWrite,
135
- cacheRead: cacheRead,
131
+ cacheCreate: cacheWrite ?? 0,
132
+ cacheRead: cacheRead ?? 0,
136
133
  });
134
+ // Standard warning order: cache-unavailability warnings precede the
135
+ // dev10x_undefined warning (the "why" before the "what"). The standalone
136
+ // conformance runner validates warnings as ordered arrays.
137
+ const warnings = [];
138
+ if (cacheWrite === null) warnings.push("cache_write is unavailable; 10xDEV is undefined.");
139
+ if (cacheRead === null) warnings.push("cache_read is unavailable; Yield, Leverage, and 10xDEV are undefined.");
140
+ for (const w of (c.warnings || [])) {
141
+ if (!warnings.includes(w)) warnings.push(w);
142
+ }
137
143
 
138
144
  return {
139
145
  spec: SIGRANK_STANDARD_VERSION,
@@ -156,12 +162,12 @@ export async function handleGetSigRankStandardRecord(args) {
156
162
  cache_read: cacheRead,
157
163
  },
158
164
  metrics: {
159
- yield: c.yield,
160
- leverage: c.leverage,
165
+ yield: cacheRead === null ? null : c.yield,
166
+ leverage: cacheRead === null ? null : c.leverage,
161
167
  velocity: c.velocity,
162
168
  snr: c.snr,
163
- dev10x: c.dev10x,
169
+ dev10x: cacheWrite === null || cacheRead === null ? null : c.dev10x,
164
170
  },
165
- warnings: c.warnings || [],
171
+ warnings,
166
172
  };
167
173
  }