Skip to content

release: promocionar develop a main (c5caded0) - #754

Merged
beyondnetPeru merged 9 commits into
mainfrom
release/promote-c5caded0
Sep 19, 2026
Merged

beyondnetPeru merged 9 commits into
mainfrom
release/promote-c5caded0

Conversation

@beyondnetPeru

@beyondnetPeru beyondnetPeru commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Promoción developmain, fijada a c5caded0 para que lo que se revisa sea lo que se mergea. Sigue a #739; suben cuatro PR.

Qué sube

Security — CodeQL #226 (path-injection), cerrada dos veces#748 y #750

GT-711#751

  • La ventana de 30 días de la evidencia de madurez se anuncia una semana antes de cerrarse en vez de descubrirse en rojo.

Sync#749

Después del merge

gh workflow run sdk-cli-ci.yml --ref main para que CodeQL SAST analice main por push (el trigger por paths no cubre core-domain) y cierre #226; Scorecard re-puntúa el martes o por workflow_dispatch.

🤖 Generated with Claude Code

beyondnetPeru and others added 9 commits September 19, 2026 07:42
…sde input.name

Última js/path-injection abierta tras #737 (análisis 19d736d): el scaffolder .NET
volvía a leer `input.name` como propiedad al escribir `${projectDir}/${input.name}.csproj`.
Es la misma cadena que el use case validó, pero CodeQL solo ve el sanitizador sobre la
variable local, no sobre una segunda lectura de la propiedad. `path.basename(projectDir)`
es exactamente ese valor (`projectDir` se construye como `${cwd}/${name}`) y ya está
saneado para el motor. Test: `Billing.Api` produce `Billing.Api.csproj`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…fore it closes

La ventana de 30 días de `09-reconcile-maturity.mjs` es el diseño: la
evidencia que caduca se re-observa, no se estira. Lo que no era diseño es
CÓMO se enteraba alguien: dos veces (2026-08-18 y 2026-09-19) por el
check requerido `Validate documentation` en rojo sobre un PR ajeno a la
evidencia, el mismo día en que empezaba a bloquear merges.

- `assessEvidenceFreshness` calcula por check el primer día en que
  `validateRuntimeEvidence` lo rechazará (misma aritmética, constante
  compartida `EVIDENCE_MAX_AGE_DAYS`), y lo clasifica fresh / expiring /
  stale / future. La banda de aviso es `EVIDENCE_WARN_DAYS = 7`.
- Todo run del reconciliador (`--check` incluido) avisa con la fecha
  cuando un check entra en la banda; no bloquea, la ventana no se mueve.
- `--freshness [--now=YYYY-MM-DD]` imprime el informe y sale 1 dentro de
  la banda o pasada la ventana; `--now` permite observar el camino rojo
  bajo demanda en vez de esperarlo.
- Workflow diario `maturity-evidence-freshness.yml` (06:45 UTC, tras el
  canary) que lee `develop` y abre/actualiza UNA issue `maturity-evidence`
  con la fecha y el procedimiento; se cierra sola al re-observar.
- 3 casos nuevos en el self-test (24): el incidente real reproducido
  (observado 08-18 → stale desde 09-18), los cuatro bordes de banda y el
  formato del informe.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
sync: traer a develop la segunda tanda del triaje de Dependabot (#730, #732, #734, #735, #738)
…o una relectura de la petición

Última alerta CodeQL abierta sobre main (#226, js/path-injection en
node-filesystem.provider.ts:50). El flujo del SARIF: POST /projects/initialize
→ body.name → InitializeProjectUseCase → ProjectScaffolderService:188
(`${projectDir}/${input.name}.csproj`) → writeFile.

La guarda de #725/#737 sanea el alias local `name` (regex + `includes('..')`
+ `isAbsolute`), pero el scaffolder vuelve a leer `input.name` del objeto de
la petición, y CodeQL rastrea el campo del objeto aparte del alias. Ahora el
caso de uso reconstruye la entrada con el valor validado (`safeInput`) y es
eso lo que llega al scaffolder; las etiquetas de `artifacts` también usan
`name`. Ninguna otra lectura de `input.name` queda aguas abajo.

No es solo la forma que CodeQL modela: un objeto cuya `name` responda una
cosa a la guarda y otra al scaffolder (getter, proxy) es un TOCTOU real, y el
test nuevo lo ejercita: el segundo read devuelve `../escape` y aun así lo
escrito es `/tmp/honest/honest.csproj`, sin `..` en ninguna ruta ni artefacto.

Verificado: spec 18/18 (17 previos + 1 nuevo), tsc sin errores en el fichero.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…dow is announced, not discovered

Fila GT-711 (DONE) en los dos boards, entrada en los dos catálogos,
registro de cierre apuntando a 3006507, fecha del tablero → 2026-09-19
con su cascada regenerada en orden (asOf → maturity-reconciliation.json
→ executive-summary EN/ES: 709 gaps, 679 cerrados, 661 registros).

Lo que NO se reclama queda escrito como tal: la issue programada es
observable por primera vez el 2026-10-13, primer día dentro de la banda
para la evidencia observada el 2026-09-19.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…project-dir

fix(security): nombrar el .csproj desde el directorio validado, no desde input.name
…tion-scaffolder-name

fix(security): el scaffolder recibe el nombre validado, no una relectura de la petición (CodeQL #226)
…xpiry-warning

GT-711: announce the maturity-evidence window a week before it closes
sync: traer a develop los cinco bumps de dependabot del 19-09 (#743#747)
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner September 19, 2026 13:15
@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: 3
  • 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

@beyondnetPeru
beyondnetPeru merged commit 2a86d51 into main Sep 19, 2026
93 of 121 checks passed
@beyondnetPeru
beyondnetPeru deleted the release/promote-c5caded0 branch September 19, 2026 13:42
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