DEV Community

CrabPascal
CrabPascal

Posted on

Our Technical Debt Backlog (Transparent) | Backlog de débito técnico (transparente)

Bilingual post · Post bilíngue

Jump to: English · Português


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
Enter fullscreen mode Exit fullscreen mode

E2E stability gate

A separate section defines when CrabPascal is "marketplace stable":

  • Horse API E2E with real HTTP
  • CRUD minimum: /produtos returns 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

  1. Pick an open ID matching your skills (parser → Bruno's audit; backend → Lucas's audit).
  2. Reference the ID in your PR description.
  3. 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.md desatualizado
  • 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
Enter fullscreen mode Exit fullscreen mode

Gate de estabilidade E2E

Seção separada define quando CrabPascal é "estável para marketplace":

  • E2E Horse API com HTTP real
  • CRUD mínimo: /produtos retorna 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

  1. Escolha ID aberto que combine com suas skills (parser → auditoria Bruno; backend → auditoria Lucas).
  2. Referencie o ID na descrição do PR.
  3. 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)