feat(job-array-one-based-index): idgen allocates ordinary IDs only (task 9.1)

idgen() now accepts only a size of 1 (anything else: -EINVAL, context
unchanged) and refuses an exhausted 20-bit sequence with -EOVERFLOW
instead of spilling into the timestamp (also after idgen_array has
taken the last block). Arrays come only from idgen_array; every caller
of idgen/GenerateJobID passes 1. The old multi-element test loop moves
to idgen_array with 1-based assertions.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-10-01 13:17:59 +00:00
parent d3b12159a4
commit 63eaea215a
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
4 changed files with 110 additions and 26 deletions

View file

@ -205,7 +205,7 @@
- _Depends: 8.2_
- [ ] 9. Integration and cleanup
- [ ] 9.1 Restrict ordinary ID allocation to single jobs
- [x] 9.1 Restrict ordinary ID allocation to single jobs
- Remove the multi-element path from ordinary ID allocation now that the harness and the API server use the array allocator
- Migrate the existing ID-allocation test loop that requests sizes above 1 to the array allocator
- Done when the old multi-element test loop is gone or migrated, ordinary allocation with size 2 returns invalid-argument in the libxce suite, and the harness and API server builds and suites still pass