Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/adapter-kit/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/adapter-kit",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/angular/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/angular",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/astro/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/astro",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/babel-plugin-component-annotate/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/babel-plugin-component-annotate",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/browser-utils/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/browser-utils",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/browser/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/browser",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/bugsee/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/bugsee",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/bun/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/bun",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/bundler-plugin-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/bundler-plugin-core",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/capture/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/capture",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/cloudflare/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/cloudflare",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/core",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/carrier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export type ServiceManifest = (internal: ServiceRegistrar & ServiceResolver) =>
// node:/DOM imports), so core stays runtime-portable.

/** The SDK's own version — the carrier slot key. Distinct from the user-facing `sdkVersion` option. */
export const BUGSEE_SDK_VERSION = '0.1.0-beta.2';
export const BUGSEE_SDK_VERSION = '0.1.0-beta.3';

const CARRIER_PROPERTY = '__BUGSEE__';

Expand Down
2 changes: 1 addition & 1 deletion packages/deno/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/deno",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/electron/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/electron",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/elysia/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/elysia",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/express/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/express",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/fastify/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/fastify",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/hapi/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/hapi",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/hono/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/hono",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/integration-shims/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/integration-shims",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/koa/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/koa",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/logger/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/logger",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/nestjs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/nestjs",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/nextjs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/nextjs",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/node-utils/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/node-utils",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/node/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/node",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/nuxt/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/nuxt",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/opentelemetry/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/opentelemetry",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/performance/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/performance",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/protocol/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/protocol",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
43 changes: 27 additions & 16 deletions packages/protocol/src/linear-time.test-helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -272,35 +272,46 @@ export const linearityVerdict = (observed: number, reference: number): number =>
observed / reference;

/**
* How many times a guard may re-measure before it fails. Scheduler/contention noise is independent per
* attempt (a CI runner read 8.7 against a ceiling of 4 for work that measures ~1 on an idle machine, with a
* 0.08 ms small side), while a genuinely super-linear subject is `SIZE_SEPARATION`x the reference on EVERY
* attempt. So the guard passes if ANY attempt lands under the ceiling: a real regression still fails, and
* a healthy build no longer fails on one unlucky sample. The best (lowest) verdict is the one reported.
* Up to three measurements decide each guard, by MAJORITY. Scheduler/contention noise is independent per
* attempt, and it cuts both ways: a CI runner read a healthy subject at 8.7 against a ceiling of 4, and a
* loaded local machine read a quadratic one under 4 once. A genuinely super-linear subject is
* `SIZE_SEPARATION`x the reference on EVERY attempt and a healthy one is near 1x on every attempt, so two
* agreeing attempts settle it and a third is only run to break a split. The median verdict is reported.
*/
const MAX_ATTEMPTS = 3;

type Reading = { verdict: number; message: string };

/**
* Runs `measure` up to {@link MAX_ATTEMPTS} times and returns the median reading. Split out so the
* decision (early exit on two agreeing attempts, a third only to break a split) can be driven with a
* scripted sequence instead of real timings.
*/
export const settleLinearity = (measure: () => Reading): Reading => {
const results: Reading[] = [];
const passed = (r: Reading): boolean => r.verdict < LINEAR_TOLERANCE;
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt += 1) {
results.push(measure());
if (attempt === 2 && passed(results[0] as Reading) === passed(results[1] as Reading)) {
break; // the first two agree: no third measurement needed
}
}
const sorted = [...results].sort((a, b) => a.verdict - b.verdict);
return sorted[Math.floor((sorted.length - 1) / 2)] as Reading;
};

export const expectLinearIn = <T>(
prepare: (size: number) => T,
work: (input: T) => void,
size: number,
benign?: (size: number) => T,
): void => {
let best: { verdict: number; message: string } | undefined;
for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt += 1) {
const result = measureLinearity(prepare, work, size, benign);
if (best === undefined || result.verdict < best.verdict) {
best = result;
}
if (result.verdict < LINEAR_TOLERANCE) {
break;
}
}
const median = settleLinearity(() => measureLinearity(prepare, work, size, benign));
// EVERY number rides along in the message. This fails on machines that cannot be inspected, and
// the verdict alone does not say whether the subject grew, the baseline shrank, or the machine
// simply reads a 16x step as more than 16x for everything — which is the whole reason the ceiling
// is relative. The reference reading is what separates those.
expect(best?.verdict, best?.message).toBeLessThan(LINEAR_TOLERANCE);
expect(median.verdict, median.message).toBeLessThan(LINEAR_TOLERANCE);
};

const measureLinearity = <T>(
Expand Down
37 changes: 37 additions & 0 deletions packages/protocol/src/linear-time.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
LINEARITY_TEST_TIMEOUT_MS,
linearityVerdict,
measurePair,
settleLinearity,
timePerCall,
} from './linear-time.test-helper';

Expand Down Expand Up @@ -381,3 +382,39 @@ describe('linearityVerdict', () => {
expect(linearityVerdict(65 * 3.9, 65)).toBeLessThan(LINEAR_TOLERANCE);
});
});

describe('settleLinearity', () => {
const script = (verdicts: number[]) => {
let calls = 0;
const measure = () => {
const verdict = verdicts[calls] as number;
calls += 1;
return { verdict, message: `v${verdict}` };
};
return { measure, calls: () => calls };
};

it('stops after two agreeing passes and accepts', () => {
const s = script([1, 2, 99]);
expect(settleLinearity(s.measure).verdict).toBeLessThan(LINEAR_TOLERANCE);
expect(s.calls()).toBe(2);
});

it('stops after two agreeing failures and rejects', () => {
const s = script([16, 15, 1]);
expect(settleLinearity(s.measure).verdict).toBeGreaterThanOrEqual(LINEAR_TOLERANCE);
expect(s.calls()).toBe(2);
});

it('breaks a pass/fail split with a third measurement: 2 fails vs 1 pass rejects', () => {
const s = script([1, 16, 15]);
expect(settleLinearity(s.measure).verdict).toBeGreaterThanOrEqual(LINEAR_TOLERANCE);
expect(s.calls()).toBe(3);
});

it('breaks a fail/pass split with a third measurement: 2 passes vs 1 fail accepts', () => {
const s = script([16, 1, 2]);
expect(settleLinearity(s.measure).verdict).toBeLessThan(LINEAR_TOLERANCE);
expect(s.calls()).toBe(3);
});
});
2 changes: 1 addition & 1 deletion packages/react/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/react",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/remix/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/remix",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/replay-canvas/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/replay-canvas",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/replay/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/replay",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/rrweb/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@bugsee/rrweb",
"version": "0.1.0-beta.2",
"version": "0.1.0-beta.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
Loading
Loading