DEV Community

CrabPascal
CrabPascal

Posted on

Sprint 17 Kickoff: What's on the Horizon | Kickoff Sprint 17: o que vem a seguir

Bilingual post · Post bilíngue

Jump to: English · Português


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

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

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

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

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)