Repository navigation
docs: a registry of device letters, and a check that every build keeps to it - #1036
Merged
Merged
Conversation
…s to it A kernel finds a device by one character, and two in one build leave one unreachable. The camera (#1005) took #V on master while the Dis VMs had it on their branch, and nothing noticed until the merge. docs/DEVICE-LETTERS.md is every letter: what it is here, native or hosted, and what it is in Plan 9, 9front and Inferno, read from their Dev tables. The rule: one letter, one device, in every build; precedent first for a new one; the letter comes with the device, in the same PR. Where this tree differs from precedent the difference is written down with its move: the bench to #x, the hosted profiler to #K, wmsz and 2fa off the watchdog's and flash's letters; and the VMs take #X. tools/devletters.py --check, run by tests/host/devletters_test.sh in CI, reads every native devtab.c and emulator config and fails on a letter twice in one build, or a device whose letter the registry does not give it. Shown failing on the camera moved onto #c and onto an unregistered #q, and on the multi-VM branch until it fills in #X. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5tjh7MFpJjYJnvTT33utv
This was referenced Oct 31, 2026
…#h for wmsz and 2fa Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5tjh7MFpJjYJnvTT33utv
…check now refuses that The table's generator created an entry for every letter it looked up, so letters only the precedents use (g, y, ...) came out "in use" here. They are "free here". devletters.py fails a row marked in use that names no device, which would have caught it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5tjh7MFpJjYJnvTT33utv
pdfinn
pushed a commit
that referenced
this pull request
Oct 31, 2026
#J, #Q and #W, the letters the device registry in #1036 reserves for them; its rows are to be marked in use when that lands. All polled. Timed on the board: an I2C address byte through a jumper at 10.0us a bit (the block adds nothing to its counts, so the first values ran at 115kHz); 8192 bytes through SPI's loopback intact at 1 and 10MHz; PWM at 10ms and 2.5ms to the microsecond at the pin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0195u6z8JjsAy9yrE5TqKxzx
pdfinn
pushed a commit
that referenced
this pull request
Nov 1, 2026
…y moved to devletters.py --check failed on master: #1037 and #1039 moved the devices and #1036, landing after, had them only as planned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0195u6z8JjsAy9yrE5TqKxzx
pdfinn
pushed a commit
that referenced
this pull request
Nov 1, 2026
#1037, #1038, #1039 and #1040 merged around the registry (#1036), so master's devletters_test failed: #K prof, #X vm, #x bench, #z wmsz and #h tfa were in use and still "reserved" here. Their rows are in use; #P is arch only; #b, #w and #F are free here, at their precedents' meanings, #w and #F now reserved for a watchdog and flash. The planned moves are the moves made. tools/devletters.py --check: PASS, 36 letters in use across 20 builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T5tjh7MFpJjYJnvTT33utv (cherry picked from commit d147d1b)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A kernel finds a device by one character after
#, and two devices with one letter in one build leave one of them unreachable. The camera (#1005) took#Von master while the Dis VMs had it on their branch (#944), and nothing noticed until the merge.docs/DEVICE-LETTERS.mdlists every letter with:dev*.cDevtable in their sources.The rules:
The planned moves:
#VDis VMs (branch)#X#V;#Xis 9front's vmx#bbench#x#bis Inferno's dbg#Pprof (hosted)#K#Pis arch everywhere#wwmsz (hosted)#F2fa (hosted)Reserved for likely devices:
#rRTC,#JI2C,#QSPI,#$PCI,#vdisplay out,#WPWM,#NCAN.tools/devletters.py --check, run bytests/host/devletters_test.shin CI, reads every nativedevtab.cand every emulator config. It fails on a letter twice in one build, or on a device whose letter the registry does not give it.#c: FAIL, "#c is both cons and cam", for each of the three kernels.#q: FAIL.#Xrow, which its PR will do.🤖 Generated with Claude Code
https://claude.ai/code/session_01T5tjh7MFpJjYJnvTT33utv