[BUG] Detailed syscall reference marks owned invocation selectors as unassigned #9

Closed
opened 2026-09-17 13:54:12 +02:00 by erikinkinen · 0 comments
Owner

Summary

The System Call Reference's active-number list stops at 0x4B and calls all remaining numbers unassigned, although the preceding transport ABI table and current implementation assign 0x4C through 0x53 to the eight owned-invocation operations. The contradictory normative text can mislead syscall consumers.

Reproduction

Read the Active Syscall Numbers section in manual/6-kernel-api-reference/14-syscall-reference.tex at Docs 4ff9a60ed9ba3fbc9d3b68a14c1a40e238ed386c, then compare the Syscall Operation Codes table in manual/5-kernel-interfaces/12-ipc-syscall-abi.tex and the lib_ipc::invocation constants. The mismatch is present in the rendered manual as well as its source.

Expected and actual behavior

Expected: the normative reference identifies the same active syscall surface as the complete transport table and implementation, with no duplicate list that can silently omit later operations.

Actual: the detailed reference omits REGISTER, SUBMIT, CLAIM, COMPLETE, COLLECT, PROGRESS, RELEASE and RELINQUISH, then describes their assigned numbers as unassigned. The kernel's rejection of removed host-report number 0x70 remains correct and should stay documented.

Environment and identity

  • Documentation: 4ff9a60ed9ba3fbc9d3b68a14c1a40e238ed386c; IPC constants: original 83e267694ee23f0986a54562adcfd8d93c326a6a; current Kernel: e15a045d7701030e58d9e59517406f8c79694ff8.
  • The complete manual currently renders as 2,385 pages without final warnings. Existing 45 documentation tests and original CI 925/926 pass; those checks do not establish agreement between two independent prose lists.
  • This is a documentation-only contradiction. No compiler, image, guest authority or syscall behavior is changed by the repair.
  • The first documentation revision introducing the drift is not established.

Evidence and prior checks

The transport table includes all twenty selectors from 0x40 through 0x53. The detailed list includes only the first twelve. The selected IPC source assigns the eight omitted constants consecutively from 0x4C. Retain the complete transport table as the single list and cross-reference it from the detailed reference, alongside the existing description of removed 0x70.

Validate Markdown and manual source checks, all existing documentation tests, complete rendering, links and affected pages. This correction does not establish full guest-build acceptance.

Single syscall inventory checkpoint — 17 September 2026: signed Docs 0a0f305464f7df2b33e2ef7c86079d64c844e4b8 replaces the stale detailed syscall list with a resolved reference to the complete twenty-selector IPC table. This repairs issue 9, which omitted the eight owned-invocation operations. Removed selector 0x70 remains explicitly rejected; runtime ABI and generated API snapshots are unchanged.

All 45 documentation tests, Markdown and template checks pass. The complete 2,385-page manual has 437,463 in-bounds word boxes, no final warnings, and visual review of pages 142 and 163. Rust and VM checks are inapplicable to these two prose-only changes. Original automatic CI 927 and CI 928 both pass. All four complete terminal logs total 764,750 bytes; reference passes resolve with 36/1/0 warnings and the final manual is warning-free. Issue 9 is repaired and closed. No full self-hosting acceptance is claimed.

Tracking

Owning review: #4. Documentation plan: #1. The caller-local kernel query checkpoint is tracked in erix/kernel#1.

## Summary The System Call Reference's active-number list stops at 0x4B and calls all remaining numbers unassigned, although the preceding transport ABI table and current implementation assign 0x4C through 0x53 to the eight owned-invocation operations. The contradictory normative text can mislead syscall consumers. ## Reproduction Read the Active Syscall Numbers section in `manual/6-kernel-api-reference/14-syscall-reference.tex` at Docs `4ff9a60ed9ba3fbc9d3b68a14c1a40e238ed386c`, then compare the Syscall Operation Codes table in `manual/5-kernel-interfaces/12-ipc-syscall-abi.tex` and the `lib_ipc::invocation` constants. The mismatch is present in the rendered manual as well as its source. ## Expected and actual behavior Expected: the normative reference identifies the same active syscall surface as the complete transport table and implementation, with no duplicate list that can silently omit later operations. Actual: the detailed reference omits REGISTER, SUBMIT, CLAIM, COMPLETE, COLLECT, PROGRESS, RELEASE and RELINQUISH, then describes their assigned numbers as unassigned. The kernel's rejection of removed host-report number 0x70 remains correct and should stay documented. ## Environment and identity - Documentation: `4ff9a60ed9ba3fbc9d3b68a14c1a40e238ed386c`; IPC constants: original `83e267694ee23f0986a54562adcfd8d93c326a6a`; current Kernel: `e15a045d7701030e58d9e59517406f8c79694ff8`. - The complete manual currently renders as 2,385 pages without final warnings. Existing 45 documentation tests and original CI 925/926 pass; those checks do not establish agreement between two independent prose lists. - This is a documentation-only contradiction. No compiler, image, guest authority or syscall behavior is changed by the repair. - The first documentation revision introducing the drift is not established. ## Evidence and prior checks The transport table includes all twenty selectors from 0x40 through 0x53. The detailed list includes only the first twelve. The selected IPC source assigns the eight omitted constants consecutively from 0x4C. Retain the complete transport table as the single list and cross-reference it from the detailed reference, alongside the existing description of removed 0x70. Validate Markdown and manual source checks, all existing documentation tests, complete rendering, links and affected pages. This correction does not establish full guest-build acceptance. Single syscall inventory checkpoint — 17 September 2026: signed Docs `0a0f305464f7df2b33e2ef7c86079d64c844e4b8` replaces the stale detailed syscall list with a resolved reference to the complete twenty-selector IPC table. This repairs [issue 9](https://git.erikinkinen.fi/erix/docs/issues/9), which omitted the eight owned-invocation operations. Removed selector 0x70 remains explicitly rejected; runtime ABI and generated API snapshots are unchanged. All 45 documentation tests, Markdown and template checks pass. The complete 2,385-page manual has 437,463 in-bounds word boxes, no final warnings, and visual review of pages 142 and 163. Rust and VM checks are inapplicable to these two prose-only changes. Original automatic [CI 927](https://git.erikinkinen.fi/erix/docs/actions/runs/927) and [CI 928](https://git.erikinkinen.fi/erix/docs/actions/runs/928) both pass. All four complete terminal logs total 764,750 bytes; reference passes resolve with 36/1/0 warnings and the final manual is warning-free. Issue 9 is repaired and closed. No full self-hosting acceptance is claimed. ## Tracking Owning review: https://git.erikinkinen.fi/erix/docs/pulls/4. Documentation plan: https://git.erikinkinen.fi/erix/docs/issues/1. The caller-local kernel query checkpoint is tracked in https://git.erikinkinen.fi/erix/kernel/issues/1.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
erix/docs#9
No description provided.