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
{{ message }}
Repository navigation
perf(people): align response recorded_at precision with canonical People serializer #390
While validating #389's pre-parse response byte ceiling, the current #317 success-response timestamp contract exposed a contradictory unbounded field: recorded_at accepted arbitrary fractional-second precision (\.\d+) even though canonical People #64 serializes EmploymentSeparationResult.recorded_at with Python datetime.isoformat(), which emits no fractional component when microseconds are zero and otherwise emits at most six fractional digits.
That made two things wrong at once:
a governed-looking 200 response with seven or arbitrarily many fractional digits could be accepted as commercial evidence even though the canonical owner cannot emit it;
because that field was semantically unbounded, no finite pre-parse byte budget could honestly preserve every canonical-owner-representable response admitted by the validator.
This is a buyer-evidence false-GREEN and the prerequisite that makes #389's bounded response representation coherent. It supersedes only the earlier response-side assumption that arbitrary fractional precision should be accepted; result/runtime/fixture chronology precision from #363–#366 remains unchanged.
Repair lineage
Test-first 790468c5fa174cd0b045226ab88ffb846dd6b30a adds a dedicated response timestamp precision regression. Canonical no-fraction, one-digit and six-digit values must pass; seven digits and an intentionally huge fractional component must fail.
Causal repair f8d8eb061c1be2432904d342894798e04fe57255 narrows only the HTTP success-response timestamp lexical contract to 0..6 fractional digits. Gregorian year/month/day/clock validation, UTC Z, the closed success envelope, operational UUID/replay checks, perf(people): bound governed response JSON before strict parsing #389 byte budget and all result/runtime/fixture timestamp logic are unchanged.
Activity