English {#english}
Our Technical Debt Backlog (Transparent)
Mintlify docs tour — v2.22.0 showed what works. This post shows what we openly admit does not — yet.
Most compiler projects hide gaps until users hit them in production. CrabPascal publishes a living technical debt backlog tied to sprint IDs, target versions, and named owners. Transparency is a feature.
How the backlog is organized
Each item has:
-
ID — e.g.
TD-CODEGEN-003 - Priority — P0 (immediate) through P3 (cleanup)
- Area — Parser, Codegen, Runtime, IDE, RTL, Tests
- Target version / sprint
- Acceptance criteria — testable, not vague
Closed items move to "Fechado em vX.Y.Z" sections with the sprint that resolved them. The audit overview provides evidence tables with file paths and line numbers.
Recently closed (examples)
| Version | Sprint | IDs closed |
|---|---|---|
| v2.21.0 | S13 | Honest exception codegen |
| v2.20.0 | S12 | TD-PROPERTIES-001 (method accessors in run) |
| v2.19.0 | S11 | TD-PARSER-001, 002, 004, 009 |
| v2.18.0 | S10 | TD-CODEGEN-006 (string pascal_*), partial TD-RUNTIME-001 |
This proves the backlog is not a graveyard — it is the sprint planning input.
What remains open (high level)
P0 codegen (S13 era — partially addressed):
- Real property getter/setter in C
- Method bodies that execute, not return defaults
- VMT parent links for inheritance
Sprint 13 chose honest failure over fake exception C for the hardest items. Full OO codegen remains scheduled.
P1 backlog (S14+):
| ID | Area | Description |
|---|---|---|
| TD-RTL-IO-001 | RTL |
System.IOUtils / TEncoding / TFileStream shims |
| TD-IDE-001 | IDE |
check → Problems panel in VS Code/Cursor |
| TD-UNICODE-001 | Unicode | Wide buffers, explicit UTF-8↔UTF-16 IO |
| TD-MARKETPLACE-001 | DevOps | Extension aligned with compiler (needs CI gcc gate) |
P3 cleanup:
- TD-TEST-004 — outdated
tests/README.md - TD-DOCS-001 — version drift in QA docs
- TD-PARSER-008 — zero
panic!in production parser paths
Release → debt map
The backlog includes a Mermaid flowchart linking v2.17.0 through v2.24.0. Each release has a primary focus:
v2.18.0 S10 → string parity
v2.19.0 S11 → parser Delphi surface
v2.21.0 S13 → honest OO/exceptions codegen
v2.22.0 S14 → IO and encoding
v2.24.0 S16 → IDE Problems + stable CI
E2E stability gate
A separate section defines when CrabPascal is "marketplace stable":
- Horse API E2E with real HTTP
- CRUD minimum:
/produtosreturns valid JSON - Port fallback when occupied
Status: initial gate in tests/horse_e2e.rs — Sprint 17 extends to full CRUD service.
How to use this as a contributor
- Pick an open ID matching your skills (parser → Bruno's audit; backend → Lucas's audit).
- Reference the ID in your PR description.
- When merged, maintainers move the item to Fechado with version.
Do not duplicate code evidence in the backlog — link to docs/audit/*.md instead.
Next in series: Lucas's backend audit — run/build parity with file-level evidence.
Português {#portugus}
Backlog de débito técnico (transparente)
Tour Mintlify — o v2.22.0 mostrou o que funciona. Este post mostra o que admitimos abertamente que ainda não funciona.
A maioria dos projetos de compilador esconde gaps até usuários baterem em produção. O CrabPascal publica um backlog de débito técnico vivo, amarrado a IDs de sprint, versões alvo e donos nomeados. Transparência é feature.
Como o backlog é organizado
Cada item tem:
-
ID — ex.
TD-CODEGEN-003 - Prioridade — P0 (imediato) a P3 (limpeza)
- Área — Parser, Codegen, Runtime, IDE, RTL, Testes
- Versão/sprint alvo
- Critérios de aceite — testáveis, não vagos
Itens fechados vão para seções "Fechado em vX.Y.Z" com o sprint que resolveu. A visão geral da auditoria traz tabelas de evidência com paths e linhas.
Fechados recentemente (exemplos)
| Versão | Sprint | IDs fechados |
|---|---|---|
| v2.21.0 | S13 | Codegen honesto de exceções |
| v2.20.0 | S12 | TD-PROPERTIES-001 (accessors por método no run) |
| v2.19.0 | S11 | TD-PARSER-001, 002, 004, 009 |
| v2.18.0 | S10 | TD-CODEGEN-006 (pascal_* strings), TD-RUNTIME-001 parcial |
Isso prova que o backlog não é cemitério — é input de planejamento de sprint.
O que permanece aberto (alto nível)
Codegen P0 (era S13 — parcialmente endereçado):
- Getter/setter real de property no C
- Corpos de método que executam, não retornam default
- VMT parent links para herança
O Sprint 13 escolheu falha honesta em vez de C falso de exceções nos itens mais difíceis. Codegen OO completo permanece agendado.
Backlog P1 (S14+):
| ID | Área | Descrição |
|---|---|---|
| TD-RTL-IO-001 | RTL | Shims System.IOUtils / TEncoding / TFileStream
|
| TD-IDE-001 | IDE |
check → painel Problems no VS Code/Cursor |
| TD-UNICODE-001 | Unicode | Buffers wide, IO UTF-8↔UTF-16 explícito |
| TD-MARKETPLACE-001 | DevOps | Extensão alinhada ao compilador (precisa gate gcc no CI) |
Limpeza P3:
- TD-TEST-004 —
tests/README.mddesatualizado - TD-DOCS-001 — drift de versão em docs de QA
- TD-PARSER-008 — zero
panic!em paths de produção do parser
Mapa release → débitos
O backlog inclui flowchart Mermaid ligando v2.17.0 a v2.24.0. Cada release tem foco principal:
v2.18.0 S10 → paridade de strings
v2.19.0 S11 → superfície Delphi no parser
v2.21.0 S13 → codegen OO/exceções honesto
v2.22.0 S14 → IO e encoding
v2.24.0 S16 → IDE Problems + CI estável
Gate de estabilidade E2E
Seção separada define quando CrabPascal é "estável para marketplace":
- E2E Horse API com HTTP real
- CRUD mínimo:
/produtosretorna JSON válido - Fallback de porta quando ocupada
Status: gate inicial em tests/horse_e2e.rs — Sprint 17 estende para serviço CRUD completo.
Como usar como contribuidor
- Escolha ID aberto que combine com suas skills (parser → auditoria Bruno; backend → auditoria Lucas).
- Referencie o ID na descrição do PR.
- Após merge, maintainers movem item para Fechado com versão.
Não duplique evidência de código no backlog — aponte para docs/audit/*.md.
Próximo na série: auditoria backend de Lucas — paridade run/build com evidência em nível de arquivo.
Published on dev.to/@crabpascal · Código em CrabPascal
Top comments (0)