Skip to content

Track fulfilled vs requested services separately#46

Merged
donaldgray merged 1 commit into
mainfrom
feature/fulfilled_capabilities
May 26, 2026
Merged

Track fulfilled vs requested services separately#46
donaldgray merged 1 commit into
mainfrom
feature/fulfilled_capabilities

Conversation

@donaldgray
Copy link
Copy Markdown
Member

Summary

  • Adds FulfilledServices (nullable int) to BuilderJob so consumers can distinguish what was requested from what was actually produced. Previously a job completing against a manifest with no text would advertise Search/FullText/etc. URLs that 404.
  • capabilities.json is now always written using the fulfilled bitmask (previously omitted when all services were requested), so the Search API correctly gates endpoints on what actually exists.
  • JobResponse exposes FulfilledServices and uses it for endpoint URL generation, falling back to Services for pre-existing null rows (backward compatible).
  • Failed jobs set FulfilledServices = None.

Test plan

  • New JobResponseTests cover URL generation, partial fulfillment, no-base-URL, and backward-compat fallback
  • TextBuildJobTests extended with FulfilledServices assertions on existing tests and two new empty-text scenarios (RestrictedServices → None; AllServices → TextAugmented only)
  • EF migration adds nullable fulfilled_services column — no backfill needed, null means pre-existing/untracked

🤖 Generated with Claude Code

Add FulfilledServices (int?, nullable) to BuilderJob so consumers can
distinguish what was requested from what was actually produced. A job
completing against a manifest with no text would previously advertise
Search/FullText/etc. URLs that 404; now those URLs are omitted.

* capabilities.json is always written using the fulfilled bitmask (was
  only written when services != All) so the Search API gates endpoints
  on what actually exists, not what was requested
* JobResponse exposes FulfilledServices and uses it for endpoint URL
  generation, falling back to Services for pre-existing null rows
* Failed jobs set FulfilledServices = None
* New JobResponseTests cover URL generation, partial fulfillment, and
  backward compatibility; TextBuildJobTests extended with assertions on
  FulfilledServices and new empty-text scenarios

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@donaldgray donaldgray requested a review from tomcrane May 26, 2026 15:27
@donaldgray donaldgray merged commit e75d83a into main May 26, 2026
4 checks passed
@donaldgray donaldgray deleted the feature/fulfilled_capabilities branch May 26, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant