Record R18 evidence and retain signed telemetry values in plots

This commit is contained in:
DCCONSTRUCTIONS
2026-09-08 01:53:30 +03:00
parent e57511f975
commit 6492ebcdee
3 changed files with 40 additions and 1 deletions
@@ -10,10 +10,11 @@ export function lineSegments(values: Array<number | null>, ceiling?: number): st
const finite = values.filter((value): value is number => value !== null && Number.isFinite(value));
if (!finite.length) return [];
const maximum = Math.max(ceiling ?? 0, ...finite, 1), denominator = Math.max(1, values.length - 1);
const minimum = Math.min(0, ...finite), span = maximum - minimum;
const segments:string[]=[];let segment:string[]=[];
values.forEach((value,index)=>{
if(value===null||!Number.isFinite(value)){if(segment.length)segments.push(segment.join(' '));segment=[];return;}
segment.push(`${(index/denominator*100).toFixed(2)},${(36-Math.max(0,Math.min(maximum,value))/maximum*34).toFixed(2)}`);
segment.push(`${(index/denominator*100).toFixed(2)},${(36-(Math.min(maximum,value)-minimum)/span*34).toFixed(2)}`);
});
if(segment.length)segments.push(segment.join(' '));
return segments;
@@ -17,6 +17,7 @@ test('archive gaps break the plot instead of manufacturing zero or connecting mi
assert.equal(result.length,2);
assert.match(result[0],/^0.00,8.80 25.00,5.40$/);
assert.deepEqual(segments([null,NaN,null]),[]);
assert.notEqual(segments([-10,0,10])[0].split(' ')[0].split(',')[1],segments([-10,0,10])[0].split(' ')[1].split(',')[1]);
});
test('HTTP media framing survives every byte boundary and refuses oversized frames',()=>{
const output=[],receive=frames((kind,bytes)=>output.push([kind,[...bytes]]));