• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / breadboard / 29958653895 / 1
96%
main: 96%

Build:
DEFAULT BRANCH: main
Ran 22 Jul 2026 09:19PM UTC
Files 187
Run time 6s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jul 2026 09:18PM UTC coverage: 96.362% (+0.002%) from 96.36%
29958653895.1

push

github

web-flow
fix!: refuse non-exact JSON number-to-integer conversions (B1-1164) (#1003)

bb_serialize_json_tok_get_i64()/get_u64() (bb_serialize_json) now refuse
(return false) whenever a JSON number's raw text has a fraction or
exponent ('.'/'e'/'E'), instead of silently handing back a
strtoll()-truncated value -- "5e1" no longer reads back as the integer 5,
"1.9" no longer reads back as 1. get_f64() is unaffected. The refusal bit
is packed into 3 previously-unused bits of the token's key_len byte (max
value 24, only needs 5 bits) -- bb_serialize_json_tok_t stays its
documented 48 bytes, no struct growth.

(B1-1165) POST /api/reboot's reboot_apply() (bb_system_routes.c) is
updated for the new tokenizer contract: its ts_is_sentinel
disambiguation-by-range logic, which existed only to tell a genuine
digit-run overflow apart from an exponent-truncated prefix that happened
to equal INT64_MAX/MIN, is simplified -- that ambiguity is gone, since
get_i64() now refuses any exponent/fraction outright rather than
truncating to a spurious sentinel. A genuine no-exponent digit-run
overflow (e.g. a 20-digit "ts") still saturates via strtoll() and clamps
to 0 downstream, unchanged. The dual-key "ts" + "ts_f64" shadow binding is
KEPT, not removed: with get_i64() refusing, a refused "ts" leaves the u64
field at its memset-zero seed, indistinguishable from an absent one --
ts_f64 (which never refuses) is now the only signal that separates
"absent -> 200, ts=0" from "present but refused -> 400".

- refuse i64/u64 reads of fraction/exponent-form JSON numbers at the
  tokenizer level, add table-driven host tests for the boundary cases
  (uint32 max/max+1, 2^53+1 exact, 20-digit saturation, negative
  exponent) including the option-(c) regression guard (i64 must never be
  derived from f64, which loses precision above 2^53)
- update reboot_apply()'s doc comments and drop the now-unreachable
  exponent-truncation half of the sentinel disambiguation; add a host
  test pinning the absen... (continued)

7386 of 7976 branches covered (92.6%)

Branch coverage included in aggregate %.

12530 of 12692 relevant lines covered (98.72%)

2484.9 hits per line

Source Files on job 29958653895.1
  • Tree
  • List 187
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 29958653895
  • f4c4c49d on github
  • Prev Job for on main (#29954841211.1)
  • Next Job for on main (#29962645756.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc