polymath-society 0.2.5 → 0.2.7

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.
@@ -205,7 +205,7 @@ var TRANSCRIPT_LINE_RE = new RegExp(`^\\s*(${NOTE})((,| and) ${NOTE})*\\s*$|^\\s
205
205
 
206
206
  // ../../lib/calibration/index.ts
207
207
  var DEFAULT_CALIBRATION = {
208
- version: "2026-07-12.2",
208
+ version: "2026-07-14.2",
209
209
  // = RUBRIC_FINGERPRINT of the shipped npm rubric (packages/coding-analyzer/
210
210
  // src/grade/criteria.ts). A unit test fails loud when the rubric changes
211
211
  // without this being updated (and re-pushed to the server).
@@ -294,7 +294,7 @@ var DEFAULT_CALIBRATION = {
294
294
  }
295
295
  ],
296
296
  codingTiers: {
297
- push: { median: 300, sigma: 1.121, tag: "estimated \u2014 log-normal fit", source: "Anthropic 2026 Claude Code study (400k sessions): median engaged user ~8 prompts/day at ~35 words \u2014 ~300 directed words/day; tail shape from its actions-per-prompt distribution. AVERAGE over substantial days, cumulative not spiky." },
297
+ push: { median: 300, sigma: 0.91, tag: "estimated \u2014 log-normal fit", source: "Anthropic 2026 Claude Code study (400k sessions): median engaged user ~8 prompts/day at ~35 words \u2014 ~300 directed words/day; tail: a 1-in-1,000 user AVERAGES ~5k directed words/day (near-daily heavy dictation, clearly below the ~10k single-day record). AVERAGE over substantial days, cumulative not spiky." },
298
298
  focus: { median: 0.08, sigma: 0.559, tag: "estimated \u2014 proxy-anchored", source: "median: Anthropic 20h/week engaged-user figure implies ~1h/day of true rapid exchange against an 8h working day; ceiling anchored to the ~4h/day deep-work limit (45% share = 1-in-1,000). AVERAGE share, cumulative not spiky." },
299
299
  orchestration: { tag: "estimated \u2014 behavior bands", source: "no published concurrency distribution exists; ceiling anchored to the Claude Code lead's documented 10-15 parallel sessions" }
300
300
  },
@@ -327,12 +327,18 @@ var DEFAULT_CALIBRATION = {
327
327
  line: "the Claude Code lead runs 10\u201315 sessions at once; his #1 tip is 3\u20135 git worktrees in parallel"
328
328
  },
329
329
  throughput: {
330
- // Top-0.1% words/day reference lines, anchored to the throughput ladder
331
- // (THROUGHPUT_LADDER in throughput.ts): score 10 "world-class sustained" =
332
- // 9k/day, score 11 "superhuman ceiling" = 12k/day. Calibrated to the person's
333
- // own anchors, not a wild guess but still a target, not a measured population.
334
- topAvgWordsPerDay: 9e3,
335
- topPeakWordsPerDay: 12e3,
330
+ // Two DIFFERENT kinds of line (2026-07-14.2): topAvg is a PERCENTILE
331
+ // claim — what a 1-in-1,000 user AVERAGES over substantial days (5k/day:
332
+ // near-daily heavy dictation; a measured top dictating power user
333
+ // averages ~3.9k). topPeak is NOT a percentileit is the CEILING
334
+ // reference, the wildest single days on record (~10k: a 14-16h
335
+ // launch-day marathon), rendered as "wildest single days", never
336
+ // "top X% peak". An avg-percentile and a peak-percentile can't both be
337
+ // shown at a same-ish value (avg≈peak reads broken — user call), and a
338
+ // peak PERCENTILE line is unknowable anyway; the record framing is
339
+ // honest and keeps the visual gap.
340
+ topAvgWordsPerDay: 5e3,
341
+ topPeakWordsPerDay: 1e4,
336
342
  benchLabel: "top 0.1%",
337
343
  // No published "words typed/day" for heavy users — the real story is OUTPUT.
338
344
  loopsHeadline: ">1,000,000 lines of Rust at 99.8% tests passing",
@@ -398,13 +404,38 @@ async function main() {
398
404
  }
399
405
  r.mins += s.activeMin || 0;
400
406
  }
401
- const resolveName = (s) => {
407
+ const pathEvidence = async (s, desc) => {
408
+ try {
409
+ const txt = await fs.readFile(s.file, "utf8");
410
+ let best = null, bestN = 0;
411
+ for (const r of desc) {
412
+ const n = txt.split(r.cwd + "/").length - 1;
413
+ if (n > bestN) {
414
+ best = r;
415
+ bestN = n;
416
+ }
417
+ }
418
+ return bestN > 0 ? best : null;
419
+ } catch {
420
+ return null;
421
+ }
422
+ };
423
+ const titleEvidence = (s, desc) => {
424
+ const title = (s.title || "").toLowerCase();
425
+ const hits = desc.filter((r) => title.includes(base(r.cwd).replace(/[-_]/g, " ")) || title.includes(base(r.cwd)));
426
+ return hits.length === 1 ? hits[0] : null;
427
+ };
428
+ const resolveName = async (s) => {
402
429
  const cwd = s.project || "";
403
430
  const own = gitRemote(cwd);
404
431
  if (own) return pretty(repoName(own));
405
432
  const pref = cwd.endsWith("/") ? cwd : cwd + "/";
406
433
  const desc = repos.filter((r) => r.cwd.startsWith(pref));
407
434
  if (!desc.length) return pretty(base(cwd));
435
+ const byPath = await pathEvidence(s, desc);
436
+ if (byPath) return byPath.name;
437
+ const byTitle = titleEvidence(s, desc);
438
+ if (byTitle) return byTitle.name;
408
439
  const t = Date.parse(s.start || "") || 0;
409
440
  const dist = (r) => t < r.min ? r.min - t : t > r.max ? t - r.max : 0;
410
441
  return desc.slice().sort((a, b) => dist(a) - dist(b) || b.mins - a.mins)[0].name;
@@ -413,7 +444,7 @@ async function main() {
413
444
  for (const s of ss) {
414
445
  const d = day(s.start);
415
446
  if (!d) continue;
416
- const p = resolveName(s);
447
+ const p = await resolveName(s);
417
448
  (dayProj[d] = dayProj[d] || {})[p] = (dayProj[d][p] || 0) + (s.activeMin || 0);
418
449
  }
419
450
  const byDay = {};
@@ -16043,7 +16043,7 @@ var TRANSCRIPT_LINE_RE = new RegExp(`^\\s*(${NOTE})((,| and) ${NOTE})*\\s*$|^\\s
16043
16043
 
16044
16044
  // ../../lib/calibration/index.ts
16045
16045
  var DEFAULT_CALIBRATION = {
16046
- version: "2026-07-12.2",
16046
+ version: "2026-07-14.2",
16047
16047
  // = RUBRIC_FINGERPRINT of the shipped npm rubric (packages/coding-analyzer/
16048
16048
  // src/grade/criteria.ts). A unit test fails loud when the rubric changes
16049
16049
  // without this being updated (and re-pushed to the server).
@@ -16132,7 +16132,7 @@ var DEFAULT_CALIBRATION = {
16132
16132
  }
16133
16133
  ],
16134
16134
  codingTiers: {
16135
- push: { median: 300, sigma: 1.121, tag: "estimated \u2014 log-normal fit", source: "Anthropic 2026 Claude Code study (400k sessions): median engaged user ~8 prompts/day at ~35 words \u2014 ~300 directed words/day; tail shape from its actions-per-prompt distribution. AVERAGE over substantial days, cumulative not spiky." },
16135
+ push: { median: 300, sigma: 0.91, tag: "estimated \u2014 log-normal fit", source: "Anthropic 2026 Claude Code study (400k sessions): median engaged user ~8 prompts/day at ~35 words \u2014 ~300 directed words/day; tail: a 1-in-1,000 user AVERAGES ~5k directed words/day (near-daily heavy dictation, clearly below the ~10k single-day record). AVERAGE over substantial days, cumulative not spiky." },
16136
16136
  focus: { median: 0.08, sigma: 0.559, tag: "estimated \u2014 proxy-anchored", source: "median: Anthropic 20h/week engaged-user figure implies ~1h/day of true rapid exchange against an 8h working day; ceiling anchored to the ~4h/day deep-work limit (45% share = 1-in-1,000). AVERAGE share, cumulative not spiky." },
16137
16137
  orchestration: { tag: "estimated \u2014 behavior bands", source: "no published concurrency distribution exists; ceiling anchored to the Claude Code lead's documented 10-15 parallel sessions" }
16138
16138
  },
@@ -16165,12 +16165,18 @@ var DEFAULT_CALIBRATION = {
16165
16165
  line: "the Claude Code lead runs 10\u201315 sessions at once; his #1 tip is 3\u20135 git worktrees in parallel"
16166
16166
  },
16167
16167
  throughput: {
16168
- // Top-0.1% words/day reference lines, anchored to the throughput ladder
16169
- // (THROUGHPUT_LADDER in throughput.ts): score 10 "world-class sustained" =
16170
- // 9k/day, score 11 "superhuman ceiling" = 12k/day. Calibrated to the person's
16171
- // own anchors, not a wild guess but still a target, not a measured population.
16172
- topAvgWordsPerDay: 9e3,
16173
- topPeakWordsPerDay: 12e3,
16168
+ // Two DIFFERENT kinds of line (2026-07-14.2): topAvg is a PERCENTILE
16169
+ // claim — what a 1-in-1,000 user AVERAGES over substantial days (5k/day:
16170
+ // near-daily heavy dictation; a measured top dictating power user
16171
+ // averages ~3.9k). topPeak is NOT a percentileit is the CEILING
16172
+ // reference, the wildest single days on record (~10k: a 14-16h
16173
+ // launch-day marathon), rendered as "wildest single days", never
16174
+ // "top X% peak". An avg-percentile and a peak-percentile can't both be
16175
+ // shown at a same-ish value (avg≈peak reads broken — user call), and a
16176
+ // peak PERCENTILE line is unknowable anyway; the record framing is
16177
+ // honest and keeps the visual gap.
16178
+ topAvgWordsPerDay: 5e3,
16179
+ topPeakWordsPerDay: 1e4,
16174
16180
  benchLabel: "top 0.1%",
16175
16181
  // No published "words typed/day" for heavy users — the real story is OUTPUT.
16176
16182
  loopsHeadline: ">1,000,000 lines of Rust at 99.8% tests passing",
@@ -16217,7 +16223,7 @@ function limiter(max) {
16217
16223
  }
16218
16224
  async function main() {
16219
16225
  const sessions = JSON.parse(await fs6.readFile(path11.join(CODING, "sessions.json"), "utf8"));
16220
- const todo = sessions.filter((s) => !isTrivial(s) && !s.duplicateOf).sort((a, b) => b.humanChars - a.humanChars);
16226
+ const todo = sessions.filter((s) => s.klass === "interactive" && !isTrivial(s) && !s.duplicateOf).sort((a, b) => b.humanChars - a.humanChars);
16221
16227
  await fs6.mkdir(DIR, { recursive: true });
16222
16228
  const pending = [];
16223
16229
  for (const s of todo) {