acp-kernel 0.0.101-pr.507.366 → 0.0.101-pr.512.368
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.
- package/dist/cache-report.d.ts +2 -10
- package/dist/cache-report.d.ts.map +1 -1
- package/dist/compress.d.ts.map +1 -1
- package/dist/index.js +19 -21
- package/dist/index.js.map +1 -1
- package/dist/recommend.d.ts +12 -12
- package/dist/recommend.d.ts.map +1 -1
- package/dist/types.d.ts +8 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cache-report.d.ts
CHANGED
|
@@ -119,17 +119,9 @@ export interface FoldEconomics {
|
|
|
119
119
|
perTurnSavingUnits: number;
|
|
120
120
|
/** Breakeven turns n* = max(0,oneTimeCost)/perTurnSaving; null when S ≤ σ. */
|
|
121
121
|
breakevenTurns: number | null;
|
|
122
|
-
/** paidBack:
|
|
123
|
-
* (
|
|
124
|
-
* savedSoFar, so the verdict and the token figures on one row agree
|
|
125
|
-
* (billion-context#2044). null while unobservable (S ≤ σ). */
|
|
122
|
+
/** paidBack: measured cadence reached the breakeven point.
|
|
123
|
+
* null while unobservable (no post-fold request yet / S ≤ σ). */
|
|
126
124
|
paidBack: boolean | null;
|
|
127
|
-
/** cadenceOk: the original short-window verdict — folds until the NEXT
|
|
128
|
-
* fold (turnsToNextFold) reached n*. This is an interleave-cadence
|
|
129
|
-
* signal (folded too soon after the previous one), NOT a payback
|
|
130
|
-
* verdict; null while there is no next fold. Guard-signal candidate for
|
|
131
|
-
* billion-context#1280 / #2044. */
|
|
132
|
-
cadenceOk: boolean | null;
|
|
133
125
|
}
|
|
134
126
|
export interface EconomicsSummary {
|
|
135
127
|
folds: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-report.d.ts","sourceRoot":"","sources":["../src/cache-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX;iFAC6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;uDAEmD;IACnD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;mEACmE;AACnE,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,SAAS,SAAS,EAAE,GACjC,mBAAmB,CAgCrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,oEAAoE;IACpE,CAAC,EAAE,MAAM,CAAC;IACV,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB;2EACuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;kEAC8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB;kEAC8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"cache-report.d.ts","sourceRoot":"","sources":["../src/cache-report.ts"],"names":[],"mappings":"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"}
|
package/dist/compress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBhF,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAEhB,MAAM,EAEN,WAAW,EAGX,iBAAiB,EAEjB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IACxD;mEAC+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvE,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IACvE,YAAY,IAAI,YAAY,EAAE,CAAC;IAC/B,UAAU,CACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,gBAAgB,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IACnE,MAAM,CACJ,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;8DAC0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAqND,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAme7D;
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBhF,OAAO,KAAK,EAAE,mBAAmB,EAAa,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,OAAO,EAGL,KAAK,YAAY,EAGlB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAEhB,MAAM,EAEN,WAAW,EAGX,iBAAiB,EAEjB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;IACxD;mEAC+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvE,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IACvE,YAAY,IAAI,YAAY,EAAE,CAAC;IAC/B,UAAU,CACR,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,gBAAgB,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IACnE,MAAM,CACJ,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B;8DAC0D;IAC1D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAqND,wBAAgB,UAAU,CAAC,KAAK,GAAE,KAAU,GAAG,eAAe,CAme7D;AAwrCD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -445,7 +445,7 @@ function defaultConfig(modelContextLimit, overrides = {}) {
|
|
|
445
445
|
promotionThreshold: 5,
|
|
446
446
|
truncate: { threshold: 0.95, terminalEscapeAfter: 3 },
|
|
447
447
|
compress: {
|
|
448
|
-
minCompressRange:
|
|
448
|
+
minCompressRange: 1250,
|
|
449
449
|
maxSummaryLength: 2e4,
|
|
450
450
|
minSummaryLength: 50
|
|
451
451
|
},
|
|
@@ -4645,16 +4645,16 @@ function mergeBatch(batch) {
|
|
|
4645
4645
|
function rangeChars(r) {
|
|
4646
4646
|
return r.chars ?? r.tokens * 4;
|
|
4647
4647
|
}
|
|
4648
|
-
function mergeRangesToThreshold(ranges,
|
|
4649
|
-
if (
|
|
4648
|
+
function mergeRangesToThreshold(ranges, minTokens) {
|
|
4649
|
+
if (minTokens <= 0 || ranges.length === 0) return ranges;
|
|
4650
4650
|
const result = [];
|
|
4651
4651
|
let batch = [];
|
|
4652
|
-
let
|
|
4652
|
+
let batchTokens = 0;
|
|
4653
4653
|
const closeBatch = () => {
|
|
4654
4654
|
if (batch.length > 0) {
|
|
4655
|
-
if (
|
|
4655
|
+
if (batchTokens >= minTokens) result.push(mergeBatch(batch));
|
|
4656
4656
|
batch = [];
|
|
4657
|
-
|
|
4657
|
+
batchTokens = 0;
|
|
4658
4658
|
}
|
|
4659
4659
|
};
|
|
4660
4660
|
for (const r of ranges) {
|
|
@@ -4663,15 +4663,15 @@ function mergeRangesToThreshold(ranges, minChars) {
|
|
|
4663
4663
|
closeBatch();
|
|
4664
4664
|
}
|
|
4665
4665
|
batch.push(r);
|
|
4666
|
-
|
|
4667
|
-
if (
|
|
4666
|
+
batchTokens += r.tokens;
|
|
4667
|
+
if (batchTokens >= minTokens) closeBatch();
|
|
4668
4668
|
}
|
|
4669
4669
|
if (batch.length > 0 && result.length > 0) {
|
|
4670
4670
|
const prev = result[result.length - 1];
|
|
4671
4671
|
const contiguous = prev.endIndex === void 0 || batch[0].startIndex === void 0 || batch[0].startIndex <= prev.endIndex + 1;
|
|
4672
4672
|
if (contiguous) {
|
|
4673
4673
|
result[result.length - 1] = mergeBatch([prev, ...batch]);
|
|
4674
|
-
} else if (
|
|
4674
|
+
} else if (batchTokens >= minTokens) {
|
|
4675
4675
|
result.push(mergeBatch(batch));
|
|
4676
4676
|
}
|
|
4677
4677
|
}
|
|
@@ -4920,7 +4920,7 @@ function createCore(ports = {}) {
|
|
|
4920
4920
|
if (entry.end > acceptedMaxIndex) acceptedMaxIndex = entry.end;
|
|
4921
4921
|
}
|
|
4922
4922
|
if (input.config.compress.minCompressRange > 0 && input.ranges.length > 0) {
|
|
4923
|
-
let
|
|
4923
|
+
let totalRangeTokens = 0;
|
|
4924
4924
|
let hasBlockBoundaryRange = false;
|
|
4925
4925
|
let countedRanges = 0;
|
|
4926
4926
|
for (const [spec, resolution] of classifications) {
|
|
@@ -4932,10 +4932,10 @@ function createCore(ports = {}) {
|
|
|
4932
4932
|
countedRanges++;
|
|
4933
4933
|
for (const id of resolution.resolved.messageIds) {
|
|
4934
4934
|
const msg = input.messages.find((m) => m.id === id);
|
|
4935
|
-
|
|
4935
|
+
totalRangeTokens += msg ? countMessageTokens(msg, countTokens) : 0;
|
|
4936
4936
|
}
|
|
4937
4937
|
}
|
|
4938
|
-
if (!allRefold && !hasBlockBoundaryRange &&
|
|
4938
|
+
if (!allRefold && !hasBlockBoundaryRange && totalRangeTokens < input.config.compress.minCompressRange) {
|
|
4939
4939
|
const diagnostics = refGateDiagnostics(
|
|
4940
4940
|
state,
|
|
4941
4941
|
input.ranges.length,
|
|
@@ -4966,7 +4966,7 @@ function createCore(ports = {}) {
|
|
|
4966
4966
|
const danglingRefs = consumedRanges.flatMap(
|
|
4967
4967
|
(spec) => danglingMessageRefs(state, input.messages, spec)
|
|
4968
4968
|
);
|
|
4969
|
-
let gateMessage = resolvableCount === 0 && consumedRanges.length === 0 && unknownCount > 0 ? `None of the ${input.ranges.length} requested range(s) resolved \u2014 every ref is unknown to this session. Refs are per-session snapshots, assigned once when a message is first rendered; no compress reassigns them, so unknown refs cannot come from an earlier compress in this session. They come from a different generation: a previous session instance (switching model or upstream mid-conversation starts a fresh session whose refs restart at m00001), the generation before a native-compaction rebase (which also resets refs to m00001), or a typo. ${diagnostics} Run acp_status, then call the compress tool again using only the refs it reports.` : consumedRanges.length > 0 ? danglingRefs.length > 0 ? `Requested range(s) cannot be anchored (e.g. ${firstConsumed.startRef}..${firstConsumed.endRef}) \u2014 the refs exist in this session's ref map, but the messages they point to are no longer in the visible context and no active block covers them: the message content changed (or the message was filtered out of the view) and now carries a new ref, leaving your old refs dangling. ${diagnostics} Run acp_status, then call the compress tool again using only the refs it reports.` : `Requested range(s) already compressed (e.g. ${firstConsumed.startRef}..${firstConsumed.endRef}) \u2014 ${coverDetail}${refoldDetail}. Nothing new to compress in that window. ${diagnostics} Continue the task, or run acp_status and target one of the CURRENT compressible ranges it reports.${tierActionHint(input.config, state)}` : countedRanges > 0 ? `Total compressible content too small (${
|
|
4969
|
+
let gateMessage = resolvableCount === 0 && consumedRanges.length === 0 && unknownCount > 0 ? `None of the ${input.ranges.length} requested range(s) resolved \u2014 every ref is unknown to this session. Refs are per-session snapshots, assigned once when a message is first rendered; no compress reassigns them, so unknown refs cannot come from an earlier compress in this session. They come from a different generation: a previous session instance (switching model or upstream mid-conversation starts a fresh session whose refs restart at m00001), the generation before a native-compaction rebase (which also resets refs to m00001), or a typo. ${diagnostics} Run acp_status, then call the compress tool again using only the refs it reports.` : consumedRanges.length > 0 ? danglingRefs.length > 0 ? `Requested range(s) cannot be anchored (e.g. ${firstConsumed.startRef}..${firstConsumed.endRef}) \u2014 the refs exist in this session's ref map, but the messages they point to are no longer in the visible context and no active block covers them: the message content changed (or the message was filtered out of the view) and now carries a new ref, leaving your old refs dangling. ${diagnostics} Run acp_status, then call the compress tool again using only the refs it reports.` : `Requested range(s) already compressed (e.g. ${firstConsumed.startRef}..${firstConsumed.endRef}) \u2014 ${coverDetail}${refoldDetail}. Nothing new to compress in that window. ${diagnostics} Continue the task, or run acp_status and target one of the CURRENT compressible ranges it reports.${tierActionHint(input.config, state)}` : countedRanges > 0 ? `Total compressible content too small (${totalRangeTokens} tokens across ${countedRanges} range(s), min ${input.config.compress.minCompressRange}). Combine more messages into your range(s) to meet the threshold.${refoldSuffix(okBlockedReasons)}` : null;
|
|
4970
4970
|
if (gateMessage === null) {
|
|
4971
4971
|
return {
|
|
4972
4972
|
state: input.state,
|
|
@@ -5715,7 +5715,7 @@ function resolveMinPressureBenefit(modelContextLimit, nudge) {
|
|
|
5715
5715
|
function pendingByTier(state, recommendation, countTokens, minCompressRange) {
|
|
5716
5716
|
const out = {};
|
|
5717
5717
|
const merged = recommendation?.recommendedRanges ?? [];
|
|
5718
|
-
const effective = minCompressRange > 0 ? merged.filter((r) =>
|
|
5718
|
+
const effective = minCompressRange > 0 ? merged.filter((r) => r.tokens >= minCompressRange) : merged;
|
|
5719
5719
|
out[1] = {
|
|
5720
5720
|
pending: effective.reduce((s, r) => s + r.tokens, 0),
|
|
5721
5721
|
targetBlocks: []
|
|
@@ -6626,8 +6626,7 @@ function computeFoldEconomics(f, price) {
|
|
|
6626
6626
|
const oneTimeCostUnits = (w - r) * f.T + q * f.sigma - r * f.S;
|
|
6627
6627
|
const perTurnSavingUnits = savingPerTurn * r;
|
|
6628
6628
|
const breakevenTurns = perTurnSavingUnits > 0 ? Math.max(0, oneTimeCostUnits) / perTurnSavingUnits : null;
|
|
6629
|
-
const paidBack = breakevenTurns !== null ? f.
|
|
6630
|
-
const cadenceOk = f.turnsToNextFold !== null && breakevenTurns !== null ? f.turnsToNextFold >= breakevenTurns : null;
|
|
6629
|
+
const paidBack = f.turnsToNextFold !== null && breakevenTurns !== null ? f.turnsToNextFold >= breakevenTurns : null;
|
|
6631
6630
|
return {
|
|
6632
6631
|
seq: f.seq,
|
|
6633
6632
|
at: f.at,
|
|
@@ -6643,8 +6642,7 @@ function computeFoldEconomics(f, price) {
|
|
|
6643
6642
|
oneTimeCostUnits: round1(oneTimeCostUnits),
|
|
6644
6643
|
perTurnSavingUnits: round1(perTurnSavingUnits),
|
|
6645
6644
|
breakevenTurns,
|
|
6646
|
-
paidBack
|
|
6647
|
-
cadenceOk
|
|
6645
|
+
paidBack
|
|
6648
6646
|
};
|
|
6649
6647
|
}
|
|
6650
6648
|
function summarizeFoldEconomics(foldEcon) {
|
|
@@ -6850,7 +6848,7 @@ function formatCacheReportFull(report) {
|
|
|
6850
6848
|
` verdict: ${e.paidBackCount} paid back, ${e.notPaidBackCount} not paid back, ${e.unobservedCount} unobserved`
|
|
6851
6849
|
);
|
|
6852
6850
|
for (const f of report.folds) {
|
|
6853
|
-
const nstar = f.breakevenTurns === null ? "n/a" : f.breakevenTurns.toFixed(
|
|
6851
|
+
const nstar = f.breakevenTurns === null ? "n/a" : f.breakevenTurns.toFixed(1);
|
|
6854
6852
|
const k = f.turnsToNextFold === null ? "\u2014" : String(f.turnsToNextFold);
|
|
6855
6853
|
const verdict = f.paidBack === null ? "?" : f.paidBack ? "PAID BACK" : "NOT PAID BACK";
|
|
6856
6854
|
const h = f.hPct === null ? "n/a" : `${f.hPct.toFixed(1)}%`;
|
|
@@ -6931,11 +6929,11 @@ function formatCacheReportSummary(report) {
|
|
|
6931
6929
|
);
|
|
6932
6930
|
if (e.notPaidBackCount > 0)
|
|
6933
6931
|
out.push(
|
|
6934
|
-
` NOT PAID BACK = post-fold
|
|
6932
|
+
` NOT PAID BACK = measured post-fold cadence never reached n* (end-of-session / back-to-back folds \u2014 one-time cost, not data loss)`
|
|
6935
6933
|
);
|
|
6936
6934
|
if (report.folds.length <= SUMMARY_FOLD_TOPS * 2) {
|
|
6937
6935
|
for (const f of report.folds) {
|
|
6938
|
-
const nstar = f.breakevenTurns === null ? "n/a" : f.breakevenTurns.toFixed(
|
|
6936
|
+
const nstar = f.breakevenTurns === null ? "n/a" : f.breakevenTurns.toFixed(1);
|
|
6939
6937
|
const k = f.turnsToNextFold === null ? "\u2014" : String(f.turnsToNextFold);
|
|
6940
6938
|
const h = f.hPct === null ? "n/a" : `${f.hPct.toFixed(1)}%`;
|
|
6941
6939
|
out.push(
|