Skip to content

feat(typed-builder): OrderBackend vertical-slice MVP over OwnIR v2/H1 - #391

Merged
PhysShell merged 4 commits into
mainfrom
ccr-d3ed89e2-vnl6fk
Oct 3, 2026
Merged

PhysShell merged 4 commits into
mainfrom
ccr-d3ed89e2-vnl6fk

Conversation

@PhysShell

Copy link
Copy Markdown
Owner

Что и зачем

TB-MVP-01: end-to-end vertical slice поверх уже слитого OwnIR v2/H1 (#390).

  • preregistration сделана до продуктового кода (cf7eb01);
  • один обычный EF Core Order остаётся единственным tracked entity;
  • генератор даёт staged builder, 4 state-типа и 3 typed transitions;
  • runtime refinement проверяет persisted state строгим EF converter'ом;
  • реальный ASP.NET Core + SQLite + ChangeTracker + SaveChanges;
  • H1 proven_call реально используется в Ship для Shipping.TrackingNumber(int), без special-case;
  • 8 positive, 20 negative, 2 declared-limit fixtures;
  • acceptance: 44 проверки за прогон, raw-SQL/HTTP/ChangeTracker independent oracles;
  • официальный clean-checkout gate повторён дважды и детерминирован по evidence digests;
  • foundation diff относительно H1 landing 877ee69f: пустой по ownlang/, rust/, spec/, extractor core, T0/calibration и perf_baseline.py.

История gate

Первый официальный run упал только на дефекте самого clean-checkout checker: tracked Rust source rust/crates/own-shadow/src/bin был принят за .NET build output. e946d82 сузил правило до bin/obj рядом с .csproj; preregistered expectations не менялись.

Второй официальный run: PASS, два свежих worktree, evidence byte-identical.

Ключевые результаты

  • H1-H18: PASS.
  • 9 неверных HTTP transitions: 409 и DB row byte-unchanged.
  • 4 corrupt persisted states: refinement не фабрикуется.
  • strict converter закрывает поведение EF8, где built-in string conversion принимал бы 7 / case-insensitive approved.
  • same tracked EF instance подтверждён runtime checks.
  • ordinary LINQ/DbSet остаются рабочими.
  • harmful/Unknown calls остаются fail-closed.
  • generator output и full-run transcripts deterministic.

Вне scope

  • concurrency token;
  • affine terminal-token semantics (G6);
  • ExecuteUpdate/raw SQL/reflection/other-process bypasses;
  • BCL/logger summaries;
  • typed write targets;
  • второй aggregate.

Подробности и точные evidence digests: docs/notes/tb-mvp-01-report.md.

claude added 4 commits October 3, 2026 16:54
Registers the Typed Builder + ASP.NET Core + EF Core Order vertical slice
before any product code: kill-first answers read off the base, exact layout,
entity, persisted state, generated API, refinement boundary, raw-entity
contract, HTTP contract, corpus with expected results, hostile controls
H1-H18, official run order and the acceptance verdict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…ET Core + EF Core sample, gate)

Implements docs/notes/tb-mvp-01-preregistration.md:

- frontend/roslyn/Own.TypedBuilder: a syntax-only generator. From one
  annotated declaration ([TypedProtocol], [ProtocolState], [BuilderRequired],
  [Transition]) it writes the state tokens, transitions, checked region
  entries, strict state storage and a staged builder. Output is deterministic
  and committed (not *.g.cs: the extractor must scan it as source).
- samples/OrderBackend: one ordinary EF Core Order entity under all typed
  states, a minimal API with create/submit/approve/ship/get/list, SQLite. A
  pure helper inside the Ship region goes through H1 proven_call.
- corpus: 8 positive, 20 negative (compiler / extractor / core), 2 stated
  limits, each pinned to its registered answer.
- Acceptance: real HTTP on real SQLite, with raw-SQL, ChangeTracker and HTTP
  oracles outside the typed API; fixed clock, deterministic transcript.
- scripts/typed_builder_gate.py (+ --clean-checkout) and the CI step.

No change under ownlang/, rust/, spec/, the extractor or T0 calibration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
…ild output

The first official clean-checkout run reported the tracked Rust source
directory rust/crates/own-shadow/src/bin as build output. Only a bin/ or obj/
beside a .csproj is .NET build output. Gate mechanics only; no registered
expectation changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
Official run history (run 1 FAIL on a gate-check defect, fixed in e946d82;
run 2 PASS), counts, transition evidence, H1-H18, the 18 GO conditions and
what the slice does not claim.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011ZFvhLx1fM9Gerg4dKsZcL
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.

2 participants