OpenADS — Plan de ejecución (2026-06-27)
Hoja de ruta acordada tras la revisión del proyecto. Los ítems marcados con [x]
están hechos en esta sesión o antes; el resto sigue el orden de prioridad.
Backlog técnico detallado:
TODO.mden la raíz del repo.
Fase 0 — Endurecer lo desplegado (hecho v1.5.1)
- Path jail en
Connectremoto (resolve_under_root) - LockMgr: unlock anidado coherente con refcount
- ABI remoto:
AdsGetMemoDataType,AdsSetStringW,AdsSetJulian,AdsSetFieldRaw - TLS: verificación por defecto;
OPENADS_TLS_INSECURE=1para dev - Límite
kMaxWireFieldsen cliente wire creds_mu_thread-safe en servidor- Actualizar
docs/known-issues.mdy sección VFP enTODO.md
Fase 1 — Confianza en CI (casi listo)
1.1 Harbour smoke en CI Windows [x] local / [ ] CI
tools/scripts/run_harbour_smoke.ps1— script portable (fix PS5.1: sin em-dash)tools/scripts/bootstrap_harbour_ci.ps1— instala Harbour en caché CItests/smoke/harbour/smoke.hbp— proyecto hbmk2- Job
harbour-smokeen.github/workflows/ci.yml - Verificado local:
EXIT=0conC:\harbour+build\default - Calentar caché Harbour en primer run de CI (puede tardar ~45-90 min una vez)
- Opcional: self-hosted runner con
C:\harbourpreinstalado
Criterio de éxito: smoke.exe sale con código 0 en windows-2022 tras cada push a main.
1.2 Remote AdsSetRelation [x] core / [ ] extras
- Estado de relaciones por
ADSHANDLE(local +tcp://) active_index_idenRemoteTablepara seek de hijoapply_relations_for_handle()tras nav remota (Skip / Goto*)- Test unitario loopback
tcp://127.0.0.1(4/4 tests, 127 aserciones) - Fix firma
AdsOpenTableen test wire (9 args, no 5) AdsSetScopedRelationremoto con scopes (mismo motor; seek scoped ya en código)- Test Harbour con
SET RELATIONsobre servidor remoto - Caso local parent → remote child (hoy cubierto remote→remote)
Criterio de éxito: tests abi_set_relation_test verdes incl. caso wire — cumplido local.
Fase 2 — Cerrar gaps remotos — cerrada v1.5.1
| # | Tarea | Estado |
|---|---|---|
| 2.1 | AdsAggregate / AdsFetchWhere en ABI local |
[x] |
| 2.2 | AdsSetRecord remoto |
[x] |
| 2.3 | AdsCustomizeAOF remoto |
[x] |
| 2.4 | Fixtures ADT/ADI en repo + tests CI sin skip | [x] |
| 2.5 | VFP header 0x32 (autoinc + NULL juntos) + test |
[x] |
Plus write (post-Fase 2, mismo release): SQLite y MSSQL nativo — write navegacional
(AdsAppendRecord / AdsSetString / AdsWriteRecord / AdsDeleteRecord).
Fase 3 — Decisión Data Dictionary (estratégico)
Decisión recomendada: DD propio OpenADS (objetos + JSON en .am) como formato oficial;
import SAP una sola vez vía tools/import_dd; no perseguir round-trip binario SAP.
| # | Tarea | |
|---|---|---|
| 3.1 | Documento de diseño DD v2 (objetos, permisos bitmask, caché en servidor) | [x] docs/dd-v2-design.md |
| 3.2 | Migrar import_dd al formato v2 |
|
| 3.3 | Suite de tests DD v2 (usuarios, grupos, RI, triggers, permisos efectivos) | |
| 3.4 | DaWeb: leer solo DD v2; dejar de depender de blobs SAP |
No hacer ahora: decodificar blobs de permisos SAP sin instancia ADS 11.x viva.
Fase 4 — Compatibilidad SAP (solo si hay caso de uso)
| # | Tarea | Bloqueador |
|---|---|---|
| 4.1 | Matriz rddtst vs ADS 11.x/12.x |
Instancia SAP + wire SAP |
| 4.2 | SapWireTransport (ads:// / sap://) |
Clean-room wire spec |
| 4.3 | docs/ace-coverage.md con divergencias medidas |
4.1 |
Fase 5 — Producto y docs
| # | Tarea | Estado |
|---|---|---|
| 5.1 | Release v1.5.1 con changelog | [x] |
| 5.2 | DDL ALTER/DROP — enganchar hooks backend (ya parseado en v1.5.0) |
[x] |
| 5.3 | DaWeb: RI dropdown, grupos de usuario, grupos DB:Public… |
[ ] |
| 5.4 | Harbour smoke Linux en CI (después de Windows estable) | [ ] |
| 5.5 | README: openace64.dll rename, bindings/php vs php_ext |
[ ] |
Orden de trabajo inmediato (próxima sesión)
- Fase 3.2 —
import_ddescribe formato nativo v2 (verdocs/dd-v2-design.md§8) - Fase 3.3 — suite de tests DD v2
- CI: verificar
harbour-smokeverde tras fix bootstrap (win-make, no CMake) + x86 forward-decl - Test live MSSQL con
OPENADS_TEST_MSSQL_CONNSTR(read padding + write)
Referencias
- Plan original de revisión: conversación 2026-06-27
TODO.md— backlog técnico detallado (DD, VFP, SQL…)roadmap.txt— hitos históricos SAP vs OpenADSdocs/known-issues.md— estado v1.5.1+