English {#english}
Sprint 17 Kickoff: What's on the Horizon
Mintlify docs tour — Sprint 13 drew the honesty line. Sprint 17 is the active sprint: real CRUD, JSON, and class var.
Phase 1 blog posts (001–031) covered fundamentals sprint by sprint. Phase 2 walks the full Mintlify documentation site. Having reviewed closed sprints 2 through 13, we now look forward at the work in flight documented in Sprint 17 Kickoff.
Status as of 2026-05-31: in progress — code exists in the working tree, review and tag pending.
Objective
Unlock the real CRUD example (examples/crud/ProdutoService.pas) and deliver a complete REST flow with product listing via Pascal service code — not just inline fixtures.
This is the "killer app" moment: Horse HTTP handlers calling a proper service layer that returns JSON.
P0 scope table
| Item | Description | State |
|---|---|---|
| TD-PARSER-005 | Parser: class var inside classes in units |
In code (uncommitted) |
| TD-PARSER-006 |
ProdutoService.pas parseable (forward methods + generics) |
Unit test green |
| TD-RTL-JSON-001 | Shim rtl/sys/System.JSON.pas
|
File created |
| TD-RUNTIME-JSON-001 | Runtime: TJSONObject / AddPair / minimal serialization |
In progress |
| TD-TEST-E2E-003 | E2E: GET /produtos via TProdutoService.ListarProdutos
|
Pending |
| TD-TEST-E2E-004 | E2E: full GET/POST/PUT/DELETE flow | Pending |
Acceptance criteria
From the kickoff doc:
cargo test --lib test_parse_produto_service_unit
cargo test --lib test_parse_class_var_forward_methods_interface
cargo test --test horse_e2e # includes ProdutoService scenario
Plus: examples/crud/crud_list_e2e.pas runs via run and returns product JSON.
Why class var and JSON together
Delphi service classes often keep in-memory stores as class var fields — shared state without global variables. Parsing class var inside unit-level classes was a parser gap (TD-PARSER-005). Without it, ProdutoService.pas could not load.
JSON shims connect Horse responses to Delphi idioms:
uses
System.JSON;
var
Obj: TJSONObject;
begin
Obj := TJSONObject.Create;
Obj.AddPair('nome', 'Widget');
Res.Send(Obj.ToString);
end;
Minimal runtime support beats pretending full System.JSON exists.
Post-S17 roadmap (proposed)
| Sprint | Target version | Focus |
|---|---|---|
| S18 | v2.26.0 | Full JSON serialization (TJSONArray, numbers, bool) |
| S19 | v2.27.0 | Native build parity for Horse (real HTTP in C) |
| S20 | v2.28.0 | IDE Problems + CI gcc/clang gate → marketplace plugins |
See project status for the consolidated 16-closed / 1-active / 3-planned sprint count.
How to follow along
Watch examples/crud/ and tests/horse_e2e.rs. When Sprint 17 closes, expect tag v2.25.0 and an updated Mintlify review page. Until then, treat kickoff criteria as the source of truth — not marketing slides.
Next in series: v2.22.0 release highlights — the current stable baseline before S17 lands.
Português {#portugus}
Kickoff Sprint 17: o que vem a seguir
Tour Mintlify — o Sprint 13 traçou a linha da honestidade. O Sprint 17 é o sprint ativo: CRUD real, JSON e class var.
Posts da fase 1 (001–031) cobriram fundamentos sprint a sprint. A fase 2 percorre o site Mintlify completo. Depois de revisar sprints fechados 2 a 13, olhamos adiante para o trabalho em voo documentado no Sprint 17 Kickoff.
Status em 2026-05-31: em andamento — código na working tree, review e tag pendentes.
Objetivo
Destravar o exemplo CRUD real (examples/crud/ProdutoService.pas) e entregar fluxo REST completo com listagem via serviço Pascal — não só fixtures inline.
Este é o momento "killer app": handlers Horse HTTP chamando camada de serviço que retorna JSON.
Tabela de escopo P0
| Item | Descrição | Estado |
|---|---|---|
| TD-PARSER-005 | Parser: class var dentro de classes em units |
Em código (não commitado) |
| TD-PARSER-006 |
ProdutoService.pas parseável (forward methods + generics) |
Teste unitário verde |
| TD-RTL-JSON-001 | Shim rtl/sys/System.JSON.pas
|
Arquivo criado |
| TD-RUNTIME-JSON-001 | Runtime: TJSONObject / AddPair / serialização mínima |
Em progresso |
| TD-TEST-E2E-003 | E2E: GET /produtos via TProdutoService.ListarProdutos
|
Pendente |
| TD-TEST-E2E-004 | E2E: fluxo GET/POST/PUT/DELETE completo | Pendente |
Critérios de aceite
Do doc de kickoff:
cargo test --lib test_parse_produto_service_unit
cargo test --lib test_parse_class_var_forward_methods_interface
cargo test --test horse_e2e # inclui cenário ProdutoService
Mais: examples/crud/crud_list_e2e.pas roda via run e retorna JSON de produtos.
Por que class var e JSON juntos
Classes de serviço Delphi frequentemente guardam stores em memória como campos class var — estado compartilhado sem variáveis globais. Parsear class var em classes de unit era gap do parser (TD-PARSER-005). Sem isso, ProdutoService.pas não carregava.
Shims JSON conectam respostas Horse a idiomas Delphi:
uses
System.JSON;
var
Obj: TJSONObject;
begin
Obj := TJSONObject.Create;
Obj.AddPair('nome', 'Widget');
Res.Send(Obj.ToString);
end;
Suporte mínimo no runtime supera fingir System.JSON completo.
Roadmap pós-S17 (proposta)
| Sprint | Versão alvo | Foco |
|---|---|---|
| S18 | v2.26.0 | Serialização JSON completa (TJSONArray, números, bool) |
| S19 | v2.27.0 | Paridade build nativo para Horse (HTTP real no C) |
| S20 | v2.28.0 | IDE Problems + gate CI gcc/clang → plugins marketplace |
Veja status do projeto para contagem consolidada 16 fechadas / 1 ativa / 3 planejadas.
Como acompanhar
Observe examples/crud/ e tests/horse_e2e.rs. Quando S17 fechar, espere tag v2.25.0 e página Mintlify de review atualizada. Até lá, trate critérios do kickoff como fonte da verdade — não slides de marketing.
Próximo na série: destaques da release v2.22.0 — baseline estável atual antes do S17 aterrisar.
Published on dev.to/@crabpascal · Código em CrabPascal
Top comments (0)