Skip to content

feat(core): recover validated pending branch capabilities - #80

Merged
kegouro merged 20 commits into
mainfrom
audit/pending-branch-integration-20260804T212640Z
Aug 5, 2026
Merged

feat(core): recover validated pending branch capabilities#80
kegouro merged 20 commits into
mainfrom
audit/pending-branch-integration-20260804T212640Z

Conversation

@kegouro

@kegouro kegouro commented Aug 5, 2026

Copy link
Copy Markdown
Owner

PR_PREPARATION.md — Preparación del Pull Request (NO ejecutado)

Fecha UTC: 2026-08-04T21:26:40Z (auditoría spmkit_branch_audit_20260804T212640Z)

Rama local resultante (validada)

  • Rama: audit/pending-branch-integration-20260804T212640Z
  • HEAD: 8cd46a22584dec108ee145fca6097243e733adda (+ 17 commits sobre base)
  • Worktree: /home/kegouro/HIBRIS/Workshop ⁄ Proyectos/SPMKIT ALL/.spmkit-worktrees/pending-branch-integration-20260804T212640Z
  • Base exacta: origin/main 03782cd08b75b204f994e9d98d49d848158333bc (PR feat(analysis): add validated Gwyddion parity capabilities #78)

Commits recuperados (11 cherry-picks + 1 extracción + 2 reverts + 1 cleanup)

Commit integrado Origen (codex/slice-b) Contenido
a3f4663 8c3d58f test valores exactos Sa/Sq
aa0639e 52299f7 test round-trip roughness CSV/JSON
84f9ae0 29afdff test aislamiento Qt E2E
fd64cbc bc01805 test plane_fit no destructivo
09f2efc 6b7e431 SHA-256 en proyectos .spmproj
d710ae6 149c675 SPMData.select + CLI de imagen
3864084 31e70a2 CLI profile (export de perfiles)
adb805b 34e24e6 tests/e2e identidades
dca86b2 adcd5e5 tests/e2e journey GUI
90856d3 43456ae test Rich CI
8cd46a2 820df23 (parcial) validación de límites de profiles.line
7940d2f e374939 modernización isinstance
e982130 + 9199a36 reverts de política packaging (df91a70, 43c3e28)
9e993a4 cleanup de .superpowers/ (reporte interno codex)

Tests

  • Suite core: 1022 passed, 23 skipped, 0 failed (baseline main: 991/23 → +31, sin regresiones)
  • E2E cli+library: 3 passed (requiere extras gwyfile, matplotlib)
  • Ruff: all checks passed · Mypy: 0 issues (132 archivos)
  • Smoke CLI profile: CSV correcto + error claro fuera de límites

Riesgos / pendientes de revisión humana

  1. tests/e2e/gui/test_image_journey.py requiere PyQt6 + display (CI offscreen). No
    ejecutado en este entorno headless — validar en CI.
  2. Política de empaquetado gui/legacy (exclusión del wheel, commits df91a70/43c3e28):
    revertidos por decisión de auditoría (main hoy incluye gui/legacy). Decidir
    conscientemente si el wheel debe excluirlo (la app legacy ya no es lanzable desde el CLI).
  3. native-ibw (PR feat(io): add limited native IBW v5 image parser #75) NO incluido: exige blind holdout (0/2) del autor.
  4. Contrato NHF, narrowing JPK-TIFF, gates 175f62c quedaron en NEEDS_MANUAL_RECONCILIATION
    (conflictos con la arquitectura moderna de main): requieren adaptación manual.

Título sugerido del PR

feat(audit): rescue pending branch content — SPMData.select, CLI profile, spmproj SHA-256 + tests

Cuerpo sugerido del PR

## Contexto
Consolidación segura del desfase entre main y las ramas remotas pendientes
(auditoría forense `spmkit_branch_audit_20260804T212640Z`).

## Veredicto de auditoría
MASS_MERGE_REJECTED_SELECTIVE_INTEGRATION_APPROVED:
- 22/24 ramas remotas ya integradas o excluidas (evidencia en BRANCH_CLASSIFICATION.md).
- Único trabajo real pendiente: `codex/slice-b-image-complete` (PR #72, OPEN).
- `feat/gwyddion-leveling-parity` y `gh-pages` excluidas por diseño.

## Contenido
- `SPMData.select(name, direction, group)`: selección inequívoca de canales.
- CLI `spmkit profile`: exportación de perfiles (CSV), con validación de límites.
- SHA-256 en proyectos `.spmproj` (integridad sin cargar datos).
- Validación de límites en `profiles.line` (extraída de 820df23; evita clip silencioso).
- 6 tests nuevos + 2 suites E2E (cli/library).
- Cosméticos: modernización isinstance.

## Verificación
- pytest tests/core: 1022 passed / 23 skipped (baseline main 991/23).
- Ruff y mypy limpios. Smoke CLI OK.

## Notas
- NO incluye: native-ibw (PR #75, blind holdout pendiente), contrato NHF, narrowing
  JPK-TIFF (requieren reconciliación manual con la arquitectura actual).
- La rama NO debe borrarse; se conserva como evidencia.

Checklist de revisión humana

  • Revisar diff completo (git diff origin/main..HEAD)
  • Decidir política gui/legacy (¿excluir del wheel?)
  • Validar tests/e2e/gui en CI con display offscreen
  • Confirmar que select() y CLI profile no rompen convenciones de API
  • Decidir merge vs squash (recomendado: merge commit con 11 commits o squash único)
  • (Opcional) Procesar PR feat(io): add limited native IBW v5 image parser #75 native-ibw tras blind holdout
  • (Opcional) Reconciliación manual de NHF contract y JPK-TIFF narrowing

Comandos de push (NO EJECUTADOS — requieren decisión humana)

# Desde el worktree de integración:
git switch audit/pending-branch-integration-20260804T212640Z

# Opción A: push de la rama y PR con gh
git push -u origin audit/pending-branch-integration-20260804T212640Z
gh pr create --base main --head audit/pending-branch-integration-20260804T212640Z \
  --title "feat(audit): rescue pending branch content — SPMData.select, CLI profile, spmproj SHA-256 + tests" \
  --body-file PR_BODY.md

# Opción B: renombrar antes de publicar
git branch -m audit/pending-branch-integration-20260804T212640Z integrate/pending-branches-20260804
git push -u origin integrate/pending-branches-20260804

⚠️ Estos comandos NO fueron ejecutados. La auditoría no hizo push ni modificó main.

kegouro added 20 commits August 4, 2026 17:41
(cherry picked from commit e374939)
(cherry picked from commit 43456ae)
(cherry picked from commit 43c3e28)
…20df23)

Selección parcial de 820df23 'Fortalece fronteras cientificas de imagen':
solo la validación de límites de profiles.line (ndim 2D, is_spatial,
coordenadas finitas dentro de la imagen, n >= 1). Necesaria para que el
CLI profile recién integrado falle con error claro en vez de recortar
silenciosamente. La parte de leveling/kpfm/roughness del commit original
NO se integra (superseded por la implementación Gwyddion parity de main).

Origen: commit 820df23 (codex/slice-b-image-complete)
Los cherry-picks de codex/slice-b-image-complete trajeron 4 archivos sin el
formato Black del repo (line-length 100). Corrige el check 'Black (format
check)' del job lint del PR #80 sin cambiar lógica.

Archivos: project.py (SHA-256 spmproj), test_project.py, test_image_journey.py
(cli y gui).
tests/e2e/gui/test_image_journey.py importa PyQt6 a nivel de modulo y el job
'test' de CI instala el paquete sin el extra 'gui', provocando un error de
coleccion que hacia fallar CI/test (3.11 y 3.12).

Mismo patron que tests/gui/conftest.py: con collect_ignore_glob se omite la
carpeta cuando no hay PyQt6+pytest-qt; el job 'gui' dedicado (que ya corre
tests/e2e/gui/test_*.py via run_gui_tests.sh) los ejecuta normalmente.
El PR anade el comando CLI 'profile' (recuperado de codex/slice-b), por lo que
el source declara 20 comandos y no 19. check_docs_sync.py esperaba el conteo
anterior y la tabla C del user-guide no documentaba 'profile', lo que hacia
fallar el check 'Deploy docs / verify'.

- scripts/check_docs_sync.py: expectativa 19 -> 20.
- docs/user-guide.md: fila 'profile' en el CLI command index.
- docs/manual/artifacts-manifest.json: regenerado con
  scripts/update_manual_provenance.py --write (user-guide.md cambio de hash).
@kegouro
kegouro marked this pull request as ready for review August 5, 2026 03:10
@kegouro
kegouro merged commit 3eba2ca into main Aug 5, 2026
6 checks passed
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