Skip to content

docs: consolidate LIMITATIONS.md across PRs #1-#4#5

Merged
Railly merged 1 commit into
mainfrom
docs/limitations
Apr 29, 2026
Merged

docs: consolidate LIMITATIONS.md across PRs #1-#4#5
Railly merged 1 commit into
mainfrom
docs/limitations

Conversation

@Railly
Copy link
Copy Markdown
Contributor

@Railly Railly commented Apr 29, 2026

Summary

Single source of truth at packages/cli/LIMITATIONS.md for everything that's stubbed, blocked by SUNAT WAF, shape-verified-but-untested-live, or pending production verification. Linked from README + SKILL.md.

Why

After 4 PRs, the limitations were scattered across:

  • Per-PR descriptions (lost once merged)
  • RESEARCH.md files in different submodules
  • Inline error messages in stub commands
  • My head, which is unreliable

A new contributor (or me in 6 months) shouldn't have to read 4 PR descriptions to know whether sunat cpe nc emit works or sunat tipo-cambio is even implemented.

Convention going forward

Every PR MUST update LIMITATIONS.md. Move items between 🚧 shaped → ⚠️ shape-verified → 🔬 verified-live, or add new ones for newly-discovered constraints. Review blocker if not.

What's documented

Per-area sections covering all 4 merged PRs:

  • CPE / Emission — driver × CPE-type matrix, unimplemented verbs, beta-vs-prod gaps, SUNAT WAF observations
  • SUNAT REST OAuth — padrón portal blocked, tipo de cambio blocked, consulta CPE shape-only
  • SIRE — entire surface untested live (test RUC has no SIRE history), TUS.IO upload protocol deferred
  • RHE / F616 (legacy) — agent-browser scraping fragility documented for completeness
  • Cross-cutting — production untested, no stress tests, no multi-RUC, audit log unbounded
  • Out of scope (no plans) — Mexico CFDI, GUI, becoming an OSE, etc

Quick markers used throughout:

  • 🔬 Verified end-to-end — confirmed against real SUNAT
  • ⚠️ Verified shape, untested live — code matches manual, never executed in prod
  • 🚧 Shaped, not implemented — clear "not yet implemented" error
  • Blocked by SUNAT — WAF / captcha / breaking schema change

Test plan

  • No code changed; tests still 223 pass / 2 skip / 0 fail
  • README links to LIMITATIONS.md
  • SKILL.md links to LIMITATIONS.md (so agents discover it)
  • CI green (docs-only diff)

Single source of truth at packages/cli/LIMITATIONS.md. Linked from README
and SKILL.md so new contributors / agents find it before assuming a
feature works end-to-end.

Documents per area:

CPE / Emission (PRs #1, #2):
- Driver matrix (mock / sunat-direct / facturador / nubefact / apisperu)
  × CPE type (factura / boleta / NC-ND / guia / resumen / baja)
  with status per cell: 🔬 verified, ⚠️ shape-only, 🚧 stubbed
- NC, ND, Guía → driver methods throw, UBL builders shaped
- cpe void T3 → flow shaped, command stubbed
- Resumen Diario sendSummary → XML verified, blocked by SUNAT beta nginx
  401 on test RUC (rate limit specific to /sendSummary path)
- Drivers facturador/nubefact/apisperu → return clear "not implemented"
- Catálogos SUNAT → minimal hardcoded set (NIU, ZZ)
- Producción endpoint → never tested, only beta

SUNAT REST OAuth APIs (PR #3):
- Padrón puntual via portal → blocked (numRnd token + reCAPTCHA)
- Tipo de cambio (SUNAT + SBS) → both blocked by WAF
- Consulta CPE Integrada → shape verified vs Greenter openapi, untested live

SIRE — RVIE/RCE (PR #4):
- All endpoints follow Manual v22 March 2024 byte-for-byte, never tested live
  (test RUC has no SIRE history)
- Reemplazar propuesta + Importar comprobantes → use TUS.IO resumable
  upload protocol; SUNAT manual says "JAVA required". Future PR.
- Reportes complementarios → same async pattern, easy adds

Cross-cutting:
- Production submissions never tested
- Stress / rate-limit tests never run
- Multi-RUC profiles never exercised
- Audit log unbounded (never rotated)
- Bun-only, macOS/Linux only (Windows untested)

Out of scope (no plans):
- Mexico CFDI, Colombia DIAN
- PDF render
- GUI / dashboard
- Becoming an OSE acreditado

Convention: every PR must update LIMITATIONS.md (move items between
shaped → verified → out of scope, or add new ones). Review blocker if not.
@Railly Railly merged commit 2655c90 into main Apr 29, 2026
1 check 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