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

akvo / african-bamboo-dashboard / 34237091906
92%

Build:
DEFAULT BRANCH: main
Ran 08 Sep 2026 02:18PM UTC
Jobs 1
Files 48
Run time 1min
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

08 Sep 2026 02:15PM UTC coverage: 92.414% (+0.03%) from 92.387%
34237091906

push

github

ifirmawan
[#51] fix(sync): key submissions on kobo_id and drop uuid uniqueness

Follow-up to 7d2b44c, which fixed the wrong half of this. Neither Kobo
field is stable on its own, and each of the two previous attempts broke
the case the other handled:

  edit in Kobo -> _id stays, _uuid CHANGES   (4 of 128 rows, local)
  re-import    -> _id changes, _uuid stays   (row 272, production)

Keying on (form, kobo_id) broke on re-import: the new _id looked like a
new submission and collided with the existing row's uuid, which is the
500 first seen on aXE8NU3f8HrXmC5FL96HoD. Keying on (form, uuid) then
broke on edit, colliding on (form, kobo_id) instead -- the same failure
mirrored, on aNcUtA9q4obRGTq2mVGqXE.

Key on (form, kobo_id) and refresh uuid as data. _id is Kobo's own
operational identifier -- /data/<id> and update_validation_statuses both
use it -- and editing is by far the more common case.

The re-import case is already covered: the superseded _id disappears
from Kobo (verified against production), so the old row is picked up by
the stale sweep, blocked from approve/reject and offered for deletion,
rather than being silently carried forward.

Drop the (form, uuid) constraint added in 0016. uuid carries no
uniqueness in any scope: a re-import legitimately leaves two rows in one
form sharing an instance uuid until the sweep flags the superseded one.
0016 itself is left in place -- the looser constraint it produced is
correct, it just was not the fix.

get_object keeps both branches: 409 across forms, where the rows are
unrelated submissions and returning either would show the wrong form's
data; most-recent within a form, where the older row is a supersession
about to be flagged.

Measured rather than assumed, via kubectl into the backend pod. Three
earlier explanations -- cloned assets sharing uuids, duplicate _uuid in
the payload, and _uuid being the stable key -- were each plausible and
each wrong. Across all forms: 0 uuids shared between assets, 0 repeated
_... (continued)

4 of 5 new or added lines in 2 files covered. (80.0%)

1 existing line in 1 file now uncovered.

3862 of 4179 relevant lines covered (92.41%)

0.92 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
92.44
-0.16% backend/api/v1/v1_odk/views.py

Coverage Regressions

Lines Coverage ∆ File
1
89.32
0.59% backend/api/v1/v1_odk/export.py
Jobs
ID Job ID Ran Files Coverage
1 34237091906.1 08 Sep 2026 02:18PM UTC 48
92.41
GitHub Action Run
Source Files on build 34237091906
  • Tree
  • List 48
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34237091906
  • 5c9cde99 on github
  • Prev Build on main (#34233127375)
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