Skip to content

Conversation

@bmartel
Copy link
Contributor

@bmartel bmartel commented Jan 27, 2026

Summary

  • Update queue filtering to exclude ground truth annotations from the annotator count
  • Use effective overlap limit (overlap + max_additional_annotators_assignable) when agreement_threshold is set
  • Frontend updates to support overlap_reached flag

Test plan

  • Run all 35 originally failing tests - all pass
  • Verify low agreement scenarios work correctly with strict task overlap enabled
  • Verify ground truth annotations can still be submitted when overlap is reached
  • Verify queue filtering properly accounts for low agreement settings

bmartel and others added 5 commits January 26, 2026 15:25
Filter tasks from the main queue when annotation overlap is reached.
This prevents new users from being assigned tasks that already have
the required number of annotations.

- Add overlap filtering to get_not_solved_tasks_qs()
- Keep postponed queue unfiltered (handled via UI read-only mode)
- Add frontend handling for overlap_reached flag with disabled buttons
…ue filtering

- Exclude GT annotations from distinct annotator count in queue filtering
- Use effective overlap limit when agreement_threshold is set
@bmartel bmartel requested a review from a team as a code owner January 27, 2026 15:26
@netlify
Copy link

netlify bot commented Jan 27, 2026

Deploy Preview for heartex-docs canceled.

Name Link
🔨 Latest commit ca362bd
🔍 Latest deploy log https://app.netlify.com/projects/heartex-docs/deploys/697a37b54f75420008800814

@netlify
Copy link

netlify bot commented Jan 27, 2026

Deploy Preview for label-studio-playground ready!

Name Link
🔨 Latest commit ca362bd
🔍 Latest deploy log https://app.netlify.com/projects/label-studio-playground/deploys/697a37b6e901140008ba6e4e
😎 Deploy Preview https://deploy-preview-9273--label-studio-playground.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jan 27, 2026

Deploy Preview for label-studio-docs-new-theme canceled.

Name Link
🔨 Latest commit ca362bd
🔍 Latest deploy log https://app.netlify.com/projects/label-studio-docs-new-theme/deploys/697a37b630dcac00085ee7a1

@netlify
Copy link

netlify bot commented Jan 27, 2026

Deploy Preview for label-studio-storybook ready!

Name Link
🔨 Latest commit ca362bd
🔍 Latest deploy log https://app.netlify.com/projects/label-studio-storybook/deploys/697a37b625eca100082b63a8
😎 Deploy Preview https://deploy-preview-9273--label-studio-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@bmartel bmartel changed the title FIT-1304: Handle low agreement and GT in strict task overlap feat: FIT-1304: Handle low agreement and GT in strict task overlap Jan 27, 2026
@bmartel bmartel changed the title feat: FIT-1304: Handle low agreement and GT in strict task overlap feat: FIT-1304: Allow strict task overlap enforcement Jan 27, 2026
- Non-annotators (managers, owners, admins) can access all tasks
- Queue filtering only applies to users with is_annotator=True
@codecov
Copy link

codecov bot commented Jan 27, 2026

Codecov Report

❌ Patch coverage is 39.28571% with 17 lines in your changes missing coverage. Please review.
✅ Project coverage is 39.36%. Comparing base (93e17c2) to head (ca362bd).
⚠️ Report is 5 commits behind head on develop.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
.../libs/editor/src/components/BottomBar/Controls.tsx 15.38% 11 Missing ⚠️
label_studio/projects/functions/next_task.py 37.50% 5 Missing ⚠️
...b/libs/editor/src/components/BottomBar/buttons.tsx 85.71% 1 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (93e17c2) and HEAD (ca362bd). Click for more details.

HEAD has 2 uploads less than BASE
Flag BASE (93e17c2) HEAD (ca362bd)
lsf-integration 1 0
lsf-e2e 1 0
Additional details and impacted files
@@             Coverage Diff              @@
##           develop    #9273       +/-   ##
============================================
- Coverage    66.86%   39.36%   -27.50%     
============================================
  Files          833      743       -90     
  Lines        64953    58299     -6654     
  Branches     11008     9365     -1643     
============================================
- Hits         43431    22951    -20480     
- Misses       21518    35344    +13826     
  Partials         4        4               
Flag Coverage Δ
lsf-e2e ?
lsf-integration ?
lsf-unit 8.87% <40.00%> (+0.01%) ⬆️
pytests 81.69% <37.50%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

When user tries to submit but another annotator completed the task while
they were working, the API returns overlap_reached error. Now the frontend:
- Detects the overlap_reached error in showOperationToast
- Updates local state and disables Submit/Update/Skip buttons
- Shows the informational overlap message instead of generic error
DRF wraps ValidationError dict values in arrays, so:
- overlap_reached: [true] instead of overlap_reached: true
- code: ["overlap_reached"] instead of code: "overlap_reached"
- detail: ["message"] instead of detail: "message"

Updated checks to handle both array and non-array formats.
- Rename errorHandlerAllowPaused to errorHandlerAllowSpecialErrors
- Allow OVERLAP_REACHED (400) errors to bubble up like PAUSED (403)
- Update showOperationToast to skip toast for display_context errors
- Also disable submission buttons when overlap error is detected

This enables LSE's ApiProvider to show a modal for overlap errors.
- Fix display_context path (result.response.display_context)
- Add event listeners for overlap error modal actions
- Add closeTask method for DataManager context
- Clean up event listeners on destroy
- Include reviewers in strict overlap filter
AppStore changes:
- Add overlapReached and overlapReachedMessage to model
- Add these fields to setFlags allowed names

Controls.tsx changes:
- Add overlapDisabled check to isDisabled condition
- Update submit/update button tooltips to show overlap message

buttons.tsx changes:
- Add overlapReached check to SkipButton disabled condition
- Update skip button tooltip to show overlap message

lsf-sdk.js changes:
- Use setFlags instead of toggleInterface for overlap state
- This properly disables buttons and shows tooltips in UI
@ricardoantoniocm
Copy link
Contributor

Please add a corresponding command to the Command Palette for this new setting.

@bmartel
Copy link
Contributor Author

bmartel commented Jan 28, 2026

/fmt

Workflow run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants