You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The generated Python router delegated raw DTOs to the consumer repository seam and
did no @autoset stamping — #203's Python stamping lives only in the ObjectManager
runtime, BELOW that seam. So an adopter who wires their own persistence into the
generated router got a deployed API that silently dropped the timestamp-stamping FR.
Per ADR-0045 (the generated API surface owns metamodel write semantics), the router
now stamps inline, ABOVE the repo seam, with no runtime dependency:
- create stamps onCreate + onUpdate from ONE captured base instant (a fresh row's
createdAt == updatedAt), ignoring any caller-supplied value;
- update/patch bumps onUpdate on EVERY request (a server-inserted present key,
compatible with the PATCH present-key tristate) and never rewrites onCreate;
- the now()-expression is keyed off the column temporal type (date/time/timestamp;
@localTime → naive), mirroring ObjectManager._auto_set_stamp;
- byte-identical output for entities with no @autoset field (regression-pinned:
render_router callers 26/26 green).
The ObjectManager keeps stamping for non-HTTP writes (defense-in-depth). TPH-router
@autoset stamping is a documented follow-up (not exercised by the corpus).
This is the Python leg of the ADR-0045 rollout (Kotlin leg: 46d8e54). The shared
api-contract @autoset gate follows; no scenario lands here, so no lane reds.
Refs #203, #229.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XeGSV3StPCcJGZNNJ4ZfAb
0 commit comments