chofex-cli 0.1.191 → 0.1.192

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.
Files changed (2) hide show
  1. package/dist/index.js +18 -45
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -60238,31 +60238,17 @@ var challengeTestText = (result3) => {
60238
60238
  `);
60239
60239
  };
60240
60240
  var challengeEvaluateText = (result3) => {
60241
- if (result3.breakdown) {
60242
- const executionCost = result3.executionCost ?? result3.runtimeMs;
60243
- const capabilityLines = [
60244
- ["Comportamiento base", result3.breakdown.coreBehavior],
60245
- ["Persistencia", result3.breakdown.persistence],
60246
- ["Concurrencia", result3.breakdown.concurrency],
60247
- ["Recuperación", result3.breakdown.failureRecovery],
60248
- ["Idempotencia", result3.breakdown.idempotency],
60249
- ["Sin regresiones", result3.breakdown.regressionSafety],
60250
- ["Rendimiento", result3.breakdown.performance]
60251
- ];
60241
+ if (result3.rankingPath === "/challenges/broken-agent") {
60252
60242
  const lines3 = [
60253
60243
  "VEREDICTO OFICIAL — BROKEN AGENT — PREPARACIÓN PARA PRODUCCIÓN",
60254
- `Puntaje ${(result3.accuracy * 100).toFixed(2)} / ${result3.sampleSize}`,
60255
- `Costo determinístico ${executionCost} ops`,
60256
- "",
60257
- "Puntajes por capacidad",
60258
- ...capabilityLines.map(([label, score]) => `${label.padEnd(20)}${score.earned.toFixed(2)} / ${score.available}`)
60244
+ `Puntaje ${(result3.accuracy * 100).toFixed(2)} / ${result3.sampleSize}`
60259
60245
  ];
60260
60246
  if (result3.rank !== undefined) {
60261
60247
  lines3.push(`Puesto #${result3.rank}`);
60262
60248
  }
60263
60249
  lines3.push(`Evaluaciones oficiales restantes ${result3.evaluationsRemaining} / ${result3.evaluationsLimit}`, "", result3.shareText, "", "Siguiente: consulta el ranking", " chofex challenge ranking --challenge broken-agent");
60264
60250
  if (result3.evaluationsRemaining > 0) {
60265
- lines3.push("", "El evaluador reporta capacidades, no casos ocultos individuales. Razona antes de volver a enviar.", " chofex challenge test --challenge broken-agent --source ./scheduler.js");
60251
+ lines3.push("", "El veredicto es un solo puntaje. No dice qué caso falló. Razona antes de volver a enviar.", " chofex challenge test --challenge broken-agent --source ./scheduler.js");
60266
60252
  }
60267
60253
  return lines3.join(`
60268
60254
  `);
@@ -60298,16 +60284,14 @@ var challengeRankingText = (ranking, now3 = new Date) => {
60298
60284
  `);
60299
60285
  }
60300
60286
  if (ranking.challenge.slug === "broken-agent") {
60301
- lines2.push("Psto Puntaje Puntos Costo Nombre");
60287
+ lines2.push("Psto Puntaje Puntos Nombre");
60302
60288
  for (const entry of ranking.entries.slice(0, 20)) {
60303
60289
  const rank = String(entry.rank).padStart(4, " ");
60304
60290
  const accuracy = percent(entry.accuracy).padStart(8, " ");
60305
60291
  const points = `${entry.exactCount}/${entry.sampleSize}`.padStart(11, " ");
60306
- const executionCost = entry.executionCost ?? entry.runtimeMs;
60307
- const runtime = `${executionCost}ops`.padStart(8, " ");
60308
60292
  const profileLinks = [entry.githubUrl, entry.linkedInUrl].filter(Boolean);
60309
60293
  const participant = [entry.displayName, ...profileLinks].join(" ");
60310
- lines2.push(`${rank} ${accuracy} ${points} ${runtime} ${participant}`);
60294
+ lines2.push(`${rank} ${accuracy} ${points} ${participant}`);
60311
60295
  }
60312
60296
  return lines2.join(`
60313
60297
  `);
@@ -60619,13 +60603,13 @@ aprobación nueva; la sesión OAuth del CLI no puede aprobarla.
60619
60603
  - El store sobrevive nuevas instancias del scheduler y reinicios del proceso.
60620
60604
  - Varios workers, incluso instancias que reutilizan un \`workerId\` después de
60621
60605
  reiniciar, pueden llamar \`runDue()\` contra el mismo store.
60622
- - \`runDue()\` intenta una vez cada job vencido al inicio de esa llamada. Un job
60623
- que falla queda pendiente para una llamada posterior y no bloquea otros jobs.
60624
- - Cada ejecución debe reclamarse atómicamente antes de llamar al executor. El
60625
- claim dura 30 segundos y necesita una identidad única distinta de
60626
- \`workerId\`. Cuando \`clock.now()\` alcanza el deadline, otro worker puede
60627
- reclamarlo. Un worker obsoleto nunca puede completar ni reabrir un claim más
60628
- nuevo.
60606
+ - \`runDue()\` reclama un job antes de llamar al executor. Un job que falla
60607
+ queda pendiente para una llamada posterior y no bloquea otros jobs.
60608
+ - Cada ejecución debe reclamarse atómicamente. El claim dura 30 segundos.
60609
+ Cuando \`clock.now()\` alcanza ese deadline, otro worker puede reclamar el
60610
+ job. Un worker que ya no es dueño del claim, incluido un proceso que vuelve
60611
+ con el mismo \`workerId\`, no puede completarlo, marcarlo como fallido ni
60612
+ reabrirlo.
60629
60613
  - Un intento se cuenta al reclamar el job. Después de 3 ejecuciones fallidas el
60630
60614
  job queda failed.
60631
60615
  - \`execute(job)\` puede fallar antes o después de aplicar el efecto. El adapter
@@ -60642,24 +60626,13 @@ ofrece operaciones síncronas \`get(id)\`, \`put(job)\`, \`delete(id)\` y
60642
60626
 
60643
60627
  ## Evaluación
60644
60628
 
60645
- El evaluador usa variantes determinísticas por participante para probar el
60646
- contrato bajo concurrencia, reinicios, fallas, idempotencia, compatibilidad y
60647
- carga. Reporta puntajes por capacidad, no casos ocultos individuales.
60648
-
60649
- - Comportamiento base: 10 puntos
60650
- - Persistencia: 15 puntos
60651
- - Concurrencia: 20 puntos
60652
- - Recuperación ante fallas: 20 puntos
60653
- - Idempotencia: 15 puntos
60654
- - Seguridad contra regresiones: 15 puntos
60655
- - Rendimiento: 5 puntos, solo si la carga termina correctamente y sin perder
60656
- seguridad de concurrencia
60629
+ El evaluador usa variantes determinísticas por participante. El veredicto
60630
+ oficial es un solo puntaje sobre 100. No incluye casos ocultos, un desglose por
60631
+ capacidad ni un costo de ejecución.
60657
60632
 
60658
60633
  El ranking exige una postulación enviada o revisada. Ordena por puntaje total,
60659
- menos evaluaciones oficiales, costo determinístico de ejecución y hora del mejor
60660
- envío. El costo es \`transacciones + ceil(jobs recorridos por tx.list / 10)\` en
60661
- una carga equivalente para todos; no usa tiempo de servidor. Todos los puntajes
60662
- válidos aparecen en el ranking.
60634
+ luego por menos evaluaciones oficiales y, al final, por la hora del mejor
60635
+ envío. Todos los puntajes válidos aparecen en el ranking.
60663
60636
  `;
60664
60637
  var brokenAgentPublicTestSource = `const test = require("node:test");
60665
60638
  const assert = require("node:assert/strict");
@@ -61014,7 +60987,7 @@ var challengeQuickstart = {
61014
60987
  "Los mejores resultados de los rankings serán seleccionados para el evento.",
61015
60988
  "Tienes 5 evaluaciones oficiales contra variantes ocultas y determinísticas por participante.",
61016
60989
  "Los tests locales y públicos son ilimitados.",
61017
- "Gana el puntaje total; los empates usan menos evaluaciones, costo determinístico y hora del mejor envío.",
60990
+ "Gana el puntaje total; los empates usan menos evaluaciones y la hora del mejor envío.",
61018
60991
  "Las herramientas de AI están permitidas, pero el participante toma las decisiones de ingeniería."
61019
60992
  ],
61020
60993
  workflow: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chofex-cli",
3
- "version": "0.1.191",
3
+ "version": "0.1.192",
4
4
  "description": "Command-line client for Hack the Andes",
5
5
  "type": "module",
6
6
  "bin": {