@productbrain/cli 0.1.0-beta.2269 → 0.1.0-beta.2271
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/scoreboard/diagnose.d.ts +49 -6
- package/dist/scoreboard/diagnose.d.ts.map +1 -1
- package/dist/scoreboard/diagnose.js +33 -14
- package/dist/scoreboard/diagnose.js.map +1 -1
- package/dist/scoreboard/diagnose.test.d.ts +3 -1
- package/dist/scoreboard/diagnose.test.d.ts.map +1 -1
- package/dist/scoreboard/diagnose.test.js +58 -7
- package/dist/scoreboard/diagnose.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -31,8 +31,9 @@
|
|
|
31
31
|
* - NO flip threshold is pinned yet (DEC-1282). Where a flip would decide ok/degraded, we
|
|
32
32
|
* render `awaiting` ("threshold unpinned — pin against live distribution"), NEVER an
|
|
33
33
|
* invented number. The RAW reading is always shown.
|
|
34
|
-
* - M4
|
|
35
|
-
* `
|
|
34
|
+
* - M4 (WP-487 Slice 2, FEAT-1374: the organic rework meter) is now IN the data payload —
|
|
35
|
+
* raw distribution only, `unmeasured` with nothing served yet, `awaiting` otherwise (no
|
|
36
|
+
* first-time-good floor is pinned), NEVER a fake green, NEVER a causality claim.
|
|
36
37
|
* - A STANDING `unmeasured` line for coaching/moat quality (TEN-2377): four green tiles ≠ a
|
|
37
38
|
* healthy moat. The board must not imply moat health.
|
|
38
39
|
* - Every `degraded`/`awaiting` carries a concrete `nextAction`.
|
|
@@ -93,12 +94,49 @@ export interface MaterializationPayload {
|
|
|
93
94
|
materializationAgeMs: number | null;
|
|
94
95
|
now: number;
|
|
95
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* WP-487 Slice 2 (FEAT-1374): the organic rework meter, filling the reserved M4 slot. Mirrors
|
|
99
|
+
* `convex/scoreboard/aggregates.ts`'s `M4Result` structurally (not imported — packages/* has no
|
|
100
|
+
* import path into convex/, same convention as the other *Payload shapes above).
|
|
101
|
+
*/
|
|
102
|
+
export interface M4Payload {
|
|
103
|
+
reworkJoinWindowMs: number;
|
|
104
|
+
lookbackWindowMs: number;
|
|
105
|
+
now: number;
|
|
106
|
+
servedCount: number;
|
|
107
|
+
unattributableServedCount: number;
|
|
108
|
+
pendingObservationCount: number;
|
|
109
|
+
decidedCount: number;
|
|
110
|
+
firstTimeGoodCount: number;
|
|
111
|
+
reworkedCount: number;
|
|
112
|
+
firstTimeGoodShare: number | null;
|
|
113
|
+
signalCount: number;
|
|
114
|
+
joinedSignalCount: number;
|
|
115
|
+
unjoinedSignalCount: number;
|
|
116
|
+
falseAttributionRate: number | null;
|
|
117
|
+
byClassification: {
|
|
118
|
+
revision: number;
|
|
119
|
+
ci_review_correction: number;
|
|
120
|
+
user_override: number;
|
|
121
|
+
};
|
|
122
|
+
ciReviewCorrectionAttribution: {
|
|
123
|
+
attributable: number;
|
|
124
|
+
notAttributable: number;
|
|
125
|
+
unspecified: number;
|
|
126
|
+
};
|
|
127
|
+
cohort: {
|
|
128
|
+
workspaceId: string;
|
|
129
|
+
taskProvidedCount: number;
|
|
130
|
+
taskAbsentCount: number;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
96
133
|
export interface ScoreboardPayload {
|
|
97
134
|
workspaceId: string;
|
|
98
135
|
generatedAt: number;
|
|
99
136
|
m1: M1Payload;
|
|
100
137
|
m2: M2Payload;
|
|
101
138
|
m3: M3Payload;
|
|
139
|
+
m4: M4Payload;
|
|
102
140
|
materialization: MaterializationPayload;
|
|
103
141
|
}
|
|
104
142
|
/**
|
|
@@ -138,11 +176,16 @@ export declare function diagnoseM2(m2: M2Payload): MetricDiagnosis;
|
|
|
138
176
|
*/
|
|
139
177
|
export declare function diagnoseM3(m3: M3Payload): MetricDiagnosis;
|
|
140
178
|
/**
|
|
141
|
-
* M4 —
|
|
142
|
-
*
|
|
143
|
-
*
|
|
179
|
+
* M4 — organic rework meter (WP-487 Slice 2, FEAT-1374). Joins served governance against
|
|
180
|
+
* later-reported rework signals within a frozen 72h window (TEN-2728) and reports RAW
|
|
181
|
+
* distribution + a false-attribution counter-metric — never a verdict (DEC-1282 unchanged for
|
|
182
|
+
* M4) and never a causality claim (spec §6: this is association, not "context served CAUSED
|
|
183
|
+
* first-time-good"). `unmeasured` when nothing has been served in the window yet (no coverage
|
|
184
|
+
* population to judge, mirrors diagnoseM1's zero-mix gate); `awaiting` whenever there IS data,
|
|
185
|
+
* since no first-time-good floor is pinned yet — the raw share is always shown, never replaced
|
|
186
|
+
* by an invented threshold.
|
|
144
187
|
*/
|
|
145
|
-
export declare function diagnoseM4(): MetricDiagnosis;
|
|
188
|
+
export declare function diagnoseM4(m4: M4Payload): MetricDiagnosis;
|
|
146
189
|
/**
|
|
147
190
|
* M5 — projection staleness, computed as LOCAL-PULL drift at the CLI (DEC-1284). The staleness-age
|
|
148
191
|
* flip is UNPINNED, so a determinable reading is `awaiting`. When the local `.productbrain/`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../../src/scoreboard/diagnose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../../src/scoreboard/diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,22 +115,41 @@ export function diagnoseM3(m3) {
|
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
|
-
* M4 —
|
|
119
|
-
*
|
|
120
|
-
*
|
|
118
|
+
* M4 — organic rework meter (WP-487 Slice 2, FEAT-1374). Joins served governance against
|
|
119
|
+
* later-reported rework signals within a frozen 72h window (TEN-2728) and reports RAW
|
|
120
|
+
* distribution + a false-attribution counter-metric — never a verdict (DEC-1282 unchanged for
|
|
121
|
+
* M4) and never a causality claim (spec §6: this is association, not "context served CAUSED
|
|
122
|
+
* first-time-good"). `unmeasured` when nothing has been served in the window yet (no coverage
|
|
123
|
+
* population to judge, mirrors diagnoseM1's zero-mix gate); `awaiting` whenever there IS data,
|
|
124
|
+
* since no first-time-good floor is pinned yet — the raw share is always shown, never replaced
|
|
125
|
+
* by an invented threshold.
|
|
121
126
|
*/
|
|
122
|
-
export function diagnoseM4() {
|
|
127
|
+
export function diagnoseM4(m4) {
|
|
128
|
+
const reading = `served=${m4.servedCount} (decided=${m4.decidedCount}, pending=${m4.pendingObservationCount}, ` +
|
|
129
|
+
`unattributable=${m4.unattributableServedCount}) · first-time-good=${pct(m4.firstTimeGoodShare)} ` +
|
|
130
|
+
`(n=${m4.decidedCount}) · reworked=${m4.reworkedCount} · signals=${m4.signalCount} ` +
|
|
131
|
+
`(revision=${m4.byClassification.revision}, ci-review=${m4.byClassification.ci_review_correction}, ` +
|
|
132
|
+
`override=${m4.byClassification.user_override}) · false-attribution=${pct(m4.falseAttributionRate)}`;
|
|
133
|
+
if (m4.servedCount === 0) {
|
|
134
|
+
return {
|
|
135
|
+
metric: 'M4',
|
|
136
|
+
label: 'Organic rework meter (first-time-good)',
|
|
137
|
+
status: 'unmeasured',
|
|
138
|
+
reading,
|
|
139
|
+
cause: 'no governance served in the window yet — nothing to join rework signals against',
|
|
140
|
+
nextAction: 'run `pb orient -b` to serve governance, then report rework via `pb rework report` as it occurs',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
123
143
|
return {
|
|
124
144
|
metric: 'M4',
|
|
125
|
-
|
|
126
|
-
// chain-id-leak guard; the entry id still rides nextAction, which is not a user-facing sink).
|
|
127
|
-
label: 'First-time-good (value)',
|
|
145
|
+
label: 'Organic rework meter (first-time-good)',
|
|
128
146
|
status: 'awaiting',
|
|
129
|
-
reading
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
147
|
+
reading,
|
|
148
|
+
// No first-time-good floor is pinned yet (this WP's job was to make a baseline possible, not
|
|
149
|
+
// to claim one — WP-C spec §5/§9). No causality claim: a served row followed by rework within
|
|
150
|
+
// the window is an ASSOCIATION, never asserted as "the served context caused the rework".
|
|
151
|
+
cause: `first-time-good floor ${UNPINNED}; a high false-attribution rate means many rework signals have no served-context evidence to join against — read the share with that caveat, not as a verdict`,
|
|
152
|
+
nextAction: 'pin the first-time-good floor once a predeclared observation window completes (WP-C spec §9); if false-attribution stays high, the pb-reported signal may be missing real rework events a CI/git signal would catch (spec §6 tripwire)',
|
|
134
153
|
};
|
|
135
154
|
}
|
|
136
155
|
/**
|
|
@@ -232,7 +251,7 @@ export function diagnose(payload, m5) {
|
|
|
232
251
|
m1: diagnoseM1(payload.m1),
|
|
233
252
|
m2: diagnoseM2(payload.m2),
|
|
234
253
|
m3: diagnoseM3(payload.m3),
|
|
235
|
-
m4: diagnoseM4(),
|
|
254
|
+
m4: diagnoseM4(payload.m4),
|
|
236
255
|
m5: diagnoseM5(m5),
|
|
237
256
|
moat: diagnoseCoachingMoat(),
|
|
238
257
|
};
|
|
@@ -247,7 +266,7 @@ export function diagnoseFromServer(payload) {
|
|
|
247
266
|
m1: diagnoseM1(payload.m1),
|
|
248
267
|
m2: diagnoseM2(payload.m2),
|
|
249
268
|
m3: diagnoseM3(payload.m3),
|
|
250
|
-
m4: diagnoseM4(),
|
|
269
|
+
m4: diagnoseM4(payload.m4),
|
|
251
270
|
m5: diagnoseM5FromServer(payload.materialization),
|
|
252
271
|
moat: diagnoseCoachingMoat(),
|
|
253
272
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/scoreboard/diagnose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/scoreboard/diagnose.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* the awaiting / unmeasured / degraded / ok states and the honesty invariants:
|
|
6
6
|
* - No flip threshold is pinned (DEC-1282) → judged readings are `awaiting`, never an invented
|
|
7
7
|
* number, and the raw reading is always present.
|
|
8
|
-
* - M4
|
|
8
|
+
* - M4 (WP-487 Slice 2, FEAT-1374: the organic rework meter) reports raw distribution only —
|
|
9
|
+
* `unmeasured` with nothing served yet, `awaiting` otherwise, never a fake green, never a
|
|
10
|
+
* causality claim.
|
|
9
11
|
* - Coaching/moat quality is a standing `unmeasured` line (TEN-2377).
|
|
10
12
|
*/
|
|
11
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.test.d.ts","sourceRoot":"","sources":["../../src/scoreboard/diagnose.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"diagnose.test.d.ts","sourceRoot":"","sources":["../../src/scoreboard/diagnose.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* the awaiting / unmeasured / degraded / ok states and the honesty invariants:
|
|
6
6
|
* - No flip threshold is pinned (DEC-1282) → judged readings are `awaiting`, never an invented
|
|
7
7
|
* number, and the raw reading is always present.
|
|
8
|
-
* - M4
|
|
8
|
+
* - M4 (WP-487 Slice 2, FEAT-1374: the organic rework meter) reports raw distribution only —
|
|
9
|
+
* `unmeasured` with nothing served yet, `awaiting` otherwise, never a fake green, never a
|
|
10
|
+
* causality claim.
|
|
9
11
|
* - Coaching/moat quality is a standing `unmeasured` line (TEN-2377).
|
|
10
12
|
*/
|
|
11
13
|
import { describe, it, expect } from 'vitest';
|
|
@@ -103,18 +105,66 @@ describe('diagnoseM3', () => {
|
|
|
103
105
|
expect(d.status).toBe('unmeasured');
|
|
104
106
|
});
|
|
105
107
|
});
|
|
108
|
+
const m4Empty = {
|
|
109
|
+
reworkJoinWindowMs: 72 * 60 * 60 * 1000,
|
|
110
|
+
lookbackWindowMs: 30 * 24 * 60 * 60 * 1000,
|
|
111
|
+
now: Date.now(),
|
|
112
|
+
servedCount: 0,
|
|
113
|
+
unattributableServedCount: 0,
|
|
114
|
+
pendingObservationCount: 0,
|
|
115
|
+
decidedCount: 0,
|
|
116
|
+
firstTimeGoodCount: 0,
|
|
117
|
+
reworkedCount: 0,
|
|
118
|
+
firstTimeGoodShare: null,
|
|
119
|
+
signalCount: 0,
|
|
120
|
+
joinedSignalCount: 0,
|
|
121
|
+
unjoinedSignalCount: 0,
|
|
122
|
+
falseAttributionRate: null,
|
|
123
|
+
byClassification: { revision: 0, ci_review_correction: 0, user_override: 0 },
|
|
124
|
+
ciReviewCorrectionAttribution: { attributable: 0, notAttributable: 0, unspecified: 0 },
|
|
125
|
+
cohort: { workspaceId: 'ws_1', taskProvidedCount: 0, taskAbsentCount: 0 },
|
|
126
|
+
};
|
|
127
|
+
const m4WithData = {
|
|
128
|
+
reworkJoinWindowMs: 72 * 60 * 60 * 1000,
|
|
129
|
+
lookbackWindowMs: 30 * 24 * 60 * 60 * 1000,
|
|
130
|
+
now: Date.now(),
|
|
131
|
+
servedCount: 10,
|
|
132
|
+
unattributableServedCount: 1,
|
|
133
|
+
pendingObservationCount: 2,
|
|
134
|
+
decidedCount: 7,
|
|
135
|
+
firstTimeGoodCount: 5,
|
|
136
|
+
reworkedCount: 2,
|
|
137
|
+
firstTimeGoodShare: 5 / 7,
|
|
138
|
+
signalCount: 3,
|
|
139
|
+
joinedSignalCount: 2,
|
|
140
|
+
unjoinedSignalCount: 1,
|
|
141
|
+
falseAttributionRate: 1 / 3,
|
|
142
|
+
byClassification: { revision: 2, ci_review_correction: 1, user_override: 0 },
|
|
143
|
+
ciReviewCorrectionAttribution: { attributable: 1, notAttributable: 0, unspecified: 0 },
|
|
144
|
+
cohort: { workspaceId: 'ws_1', taskProvidedCount: 2, taskAbsentCount: 1 },
|
|
145
|
+
};
|
|
106
146
|
describe('diagnoseM4', () => {
|
|
107
|
-
it('is
|
|
108
|
-
const d = diagnoseM4();
|
|
147
|
+
it('is unmeasured when nothing has been served in the window yet', () => {
|
|
148
|
+
const d = diagnoseM4(m4Empty);
|
|
149
|
+
expect(d.status).toBe('unmeasured');
|
|
150
|
+
expect(d.metric).toBe('M4');
|
|
151
|
+
expect(d.cause).toMatch(/nothing to join/i);
|
|
152
|
+
expect(d.nextAction).toMatch(/pb orient|pb rework report/);
|
|
153
|
+
});
|
|
154
|
+
it('is awaiting (raw distribution, no invented threshold) whenever there IS served data', () => {
|
|
155
|
+
const d = diagnoseM4(m4WithData);
|
|
109
156
|
expect(d.status).toBe('awaiting');
|
|
110
157
|
expect(d.metric).toBe('M4');
|
|
111
|
-
|
|
112
|
-
expect(d.
|
|
158
|
+
// The raw numbers are always shown, never replaced by a verdict.
|
|
159
|
+
expect(d.reading).toContain('first-time-good=71%');
|
|
160
|
+
expect(d.reading).toContain('false-attribution=33%');
|
|
161
|
+
expect(d.reading).toContain('served=10');
|
|
162
|
+
expect(d.reading).toContain('signals=3');
|
|
163
|
+
// No causality claim (spec §6): association only, never "caused"/"proves"/"confirms".
|
|
164
|
+
expect(d.cause).not.toMatch(/\bcaused\b|\bproves\b|\bconfirms\b/i);
|
|
113
165
|
// chain-id-leak guard: the user-facing strings carry no raw Chain IDs.
|
|
114
166
|
expect(d.cause).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
|
|
115
167
|
expect(d.nextAction).not.toMatch(/\b[A-Z]{2,5}-\d+\b/);
|
|
116
|
-
// No invented number in the reading — it is a delta-or-nothing tile.
|
|
117
|
-
expect(d.reading).toMatch(/delta|baseline/i);
|
|
118
168
|
});
|
|
119
169
|
});
|
|
120
170
|
describe('diagnoseM5', () => {
|
|
@@ -183,6 +233,7 @@ describe('diagnose (bundle)', () => {
|
|
|
183
233
|
sessionWindow: 20,
|
|
184
234
|
sessionsConsidered: 0,
|
|
185
235
|
},
|
|
236
|
+
m4: m4WithData,
|
|
186
237
|
materialization: { latestMaterializedAt: null, materializationAgeMs: null, now: Date.now() },
|
|
187
238
|
};
|
|
188
239
|
const m5 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.test.js","sourceRoot":"","sources":["../../src/scoreboard/diagnose.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"diagnose.test.js","sourceRoot":"","sources":["../../src/scoreboard/diagnose.test.ts"],"names":[],"mappings":"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"}
|