Skip to content

release: promocionar develop a main (3bd180ef) - #726

Merged
beyondnetPeru merged 10 commits into
mainfrom
release/promote-3bd180ef
Sep 19, 2026
Merged

beyondnetPeru merged 10 commits into
mainfrom
release/promote-3bd180ef

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Promoción develop → main, fijada a 3bd180ef para que lo que se revisa sea lo que se mergea. Sigue a #714.

Qué sube

Seguridad (Security tab) — #725

  • CWE-78: NxWorkspaceStrategy (tool MCP evolith-scaffold) ejecuta sin shell (executeFileOrThrow, nuevo en el puerto ICommandExecutor) y valida cada nombre; git-log-reader por argv.
  • CWE-22: POST /evaluate legacy contiene satellitePath/corePath bajo WORKSPACE_ROOT/CORE_PATH; el manifest de validate-satellite se fija a las rutas resueltas; projects/initialize.name validado como segmento.
  • Prototype pollution en evolith-config-set; 8 ReDoS (15 s → 0 ms en 200k barras); anchor en satellite adopt.
  • Scorecard Token-Permissions: contents: read arriba en 7 workflows, escritura declarada por job.
  • Al correr CodeQL sobre main se cierran las 37 alertas que quedan abiertas (las otras 58 ya están descartadas con motivo).

Docs y evidencia — #724

  • README: posicionamiento del control del flujo SDLC; re-observación de los 4 checks de evidencia de madurez que cumplieron 31 días (lo que tenía Validate documentation en rojo en todos los PR de hoy).

Nota

main lleva #719 (bump de @opentelemetry/exporter-trace-otlp-http) que develop no tiene: esta promoción lo conserva (merge, no reset); el back-merge main → develop va en PR aparte.

🤖 Generated with Claude Code

beyondnetPeru and others added 9 commits September 15, 2026 09:24
sync: traer a develop los tres bumps de dependabot que entraron por main
sync: traer a develop el revert de @hono/node-server 2.x (#716)
La portada vendía a Evolith solo como linter de arquitectura y callaba
el segundo diferenciador: las reglas van atadas a la fase SDLC del
producto, `gate evaluate` mide los controles de la fase y `phase advance`
bloquea la transición hasta que se cumplen, con las ADRs en el mismo
ciclo. Un párrafo nuevo en EN/ES, sin cifras y sin afirmar firma
criptográfica (la evidencia es legible por máquina, no firmada).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…, ReDoS y permisos de workflows

CodeQL (main, 75 resultados) y Scorecard, triados a mano con el SARIF: se arregla
lo que un llamador autenticado podía explotar y se descarta lo que no lo es.

CWE-78 · inyección de shell (11 alertas)
- `NxWorkspaceStrategy` interpolaba `apiName`, `hostName`, `remotes` y `domains`
  (entrada del tool MCP `evolith-scaffold`, sin validar) en una línea de shell.
  Ahora construye argv y lo ejecuta sin shell (`executeFileOrThrow`), y además
  exige que cada nombre sea un identificador plano: `--directory=apps/../..`
  y `--name=--flag` se rechazan antes de spawnear nada.
- `ICommandExecutor` gana `executeFile`/`executeFileOrThrow`; el ejecutor del
  CLI ya lo tenía y el del MCP lo implementa con `execFile`. Se elimina el
  bloque duplicado de la interfaz (TS los fusionaba en silencio).
- `git-log-reader` pasa `--since`/`--max-count` como argv.

CWE-22 · path injection en core-api (9 alertas en el adaptador de fs)
- `POST /evaluate` legacy leía `body.satellitePath`/`body.corePath` tal cual
  (el DTO decía "path traversal validation required" y nadie la hacía): el
  resolver los contiene bajo WORKSPACE_ROOT / CORE_PATH, y una instancia sin
  resolver falla cerrada.
- `POST /architecture/validate-satellite`: el manifest manda en el caso de uso
  y traía sus propias rutas; se fijan a las resueltas.
- `POST /projects/initialize`: `name` es un segmento de directorio, no una ruta
  (DTO + caso de uso, que también sirve al CLI).

CWE-1321 · prototype pollution: `evolith-config-set` rechaza `__proto__`,
`constructor` y `prototype` como segmentos y solo desciende por propiedades
propias.

ReDoS (8) · `/\/+$/` tardaba 15 s en 200k barras; se sustituye por el trim
char a char que `codeowners.ts` ya usaba. `parseRepoUrl` queda anclado al
host. El check de URL de `satellite adopt` se ancla al inicio.

Scorecard Token-Permissions (7 workflows): `contents: read` arriba y la
escritura declarada en el job que la hace (packages en docker, contents en
docs-release y upload-assets, pull-requests:read para el guard 50).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ged out on 2026-09-17

Las cuatro evidencias de `maturity-evidence.json` se tomaron el 2026-08-18 y
cruzaron la ventana de 30 días de `09-reconcile-maturity.mjs` el 2026-09-17,
poniendo en rojo `Validate documentation` (requerido) en cualquier PR desde
entonces; el primero en tropezar fue #724, un cambio solo de README.

Se re-toman las cuatro contra runs reales, no se estira la fecha:
- cli-baseline / coverage / documentation: cabeza de develop 4d65574,
  runs 34998373252 (13 jobs verdes; 107 suites, 1492 tests, branches
  75,73 % sobre el umbral del 75 %) y 34998373244.
- release: cabeza de main 99b5325, run 35435224976 (binarios y
  smoke-tests en las tres plataformas).

`asOf` y la fecha del tablero no se mueven; la reconciliación se regenera
con el propio script y pasa en `--check`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ad aged out again

`09-reconcile-maturity.mjs` accepts evidence 0..30 days old; the 2026-08-18 entries hit
32 on 2026-09-19 and turned `Validate documentation` (a REQUIRED check) red on every
pull request opened today (#722-#725) and on the main push 99b5325 — none of which
touched what the evidence describes. Same failure mode as 3e5aac8, one month later.

Fresh observations of the same four claims, not date bumps:

- cli-baseline: run 35435871033 on cb2c8a1 (this PR), all THIRTEEN CLI CI jobs green.
- coverage: same run — 107 suites / 1492 tests, Branches 75.69% (2382/3147) against the
  unchanged 75% threshold.
- documentation: the latest green Documentation Validation is 34998373244 on the develop
  head 4d65574 (2026-09-15); every run today is red for exactly this staleness.
- release: run 35435871089 on cb2c8a1 — binaries packaged and smoke-tested on the three
  platforms; publish/upload skipped by design on a pull request.

The commits are ones a pull-request checkout can resolve (`git cat-file`): main's head
99b5325 is NOT reachable from develop yet, so citing it would have failed the guard with
"references an unavailable commit". `asOf` stays 2026-09-05 with the board, so the
reconciliation is regenerated but nothing downstream of the board date moves.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
docs(readme): resaltar el control del flujo SDLC en el posicionamiento
Conflict on the two maturity evidence files: another session refreshed the same four
aged-out checks in 2ee3f9a (via #724) minutes before 93a90f9 did. develop's refresh
wins outright — one observation per aging, not two — so this branch now carries no
evidence change of its own; 09-reconcile-maturity --check and guard 46 pass on the result.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…triage-2026-09-19

fix(security): cerrar lo importante del tab Security — CWE-78/22/1321, ReDoS y permisos de workflows
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner September 19, 2026 10:27
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown
Contributor

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 1
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 527
Total ES files 497
Paired files 0
Coverage 0%

✅ Good: All EN changes have ES counterparts.


Generated by GitHub Actions

main moved under the promotion: #723 (uuid pruned from mcp-server, @nestjs/* majors
ignored in dependabot.yml) landed on main directly and carried a THIRD refresh of the
same aged-out maturity evidence (20706cd). Conflict on the two evidence files only;
develop's refresh (2ee3f9a, already on this branch) is kept — every commit it cites is
reachable once main is merged in — and 09-reconcile-maturity --check plus guard 46 pass
on the result. #723's own changes come through untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru merged commit 5012174 into main Sep 19, 2026
56 checks passed
@beyondnetPeru
beyondnetPeru deleted the release/promote-3bd180ef branch September 19, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant