Chart VoidKontrol wayfinding and correct current hidraw evidence
This commit is contained in:
@@ -6,8 +6,8 @@ Issues and specs for this repo live as Gitea issues. Use the official [`tea`](ht
|
||||
|
||||
- **Create an issue**: `tea issues create --title "..." --description "..."`.
|
||||
- **Read an issue**: `tea issues <number>`.
|
||||
- **List issues**: `tea issues`; use `tea issues --state all` for all states and `tea issues --format json` for machine-readable output.
|
||||
- **Comment on an issue**: `tea comment issue <number>`.
|
||||
- **List issues**: `tea issues`; use `tea issues --state all` for all states and `tea issues --output json` for machine-readable output.
|
||||
- **Comment on an issue**: `tea comments add <number> "<body>"`.
|
||||
- **Apply / remove labels**: `tea issues edit <number> --add-labels "..."` / `--remove-labels "..."`.
|
||||
- **Close**: `tea issues close <number>`.
|
||||
- **Pull requests**: use `tea pulls create`, `tea pulls <number>`, and `tea pulls checkout <number>`.
|
||||
@@ -25,3 +25,37 @@ Create a Gitea issue.
|
||||
## When a skill says "fetch the relevant ticket"
|
||||
|
||||
Run `tea issues <number>`.
|
||||
|
||||
## Wayfinding operations
|
||||
|
||||
The current project is `xavierk/voidkontrol`, with configured tea login
|
||||
`xavierk`. Pass `--login xavierk --repo xavierk/voidkontrol` when repository
|
||||
context is unavailable. Use `tea api` for API operations not exposed by a
|
||||
dedicated command; read the server's `/swagger.v1.json` for its current schema.
|
||||
|
||||
- **Map**: the issue labelled `wayfinder:map`. Start by reading its body.
|
||||
- **Children**: Gitea 1.27.1 exposes issue dependencies but no parent/subissue
|
||||
endpoint in this server's schema. Give each child `wayfinder:child-of-<map
|
||||
index>` plus its `wayfinder:research`, `wayfinder:task`,
|
||||
`wayfinder:grilling`, or `wayfinder:prototype` label. Its body ends with a
|
||||
named `Parent map` link. This membership convention does not replace native
|
||||
blocking.
|
||||
- **Claim**: assign the driving user before work:
|
||||
`tea issues edit --add-assignees xavierk <index>`. An open issue with an
|
||||
assignee is claimed. If work stops incomplete, leave an evidence/progress
|
||||
comment and release the claim with an API PATCH containing `{"assignees":[]}`.
|
||||
- **Blocking**: POST `{"owner":"xavierk","repo":"voidkontrol","index":<blocker>}`
|
||||
to `repos/xavierk/voidkontrol/issues/<blocked>/dependencies` using `tea api`.
|
||||
Create all tickets before adding these relationships. Verify by GET on that
|
||||
endpoint; each returned issue blocks the issue in the URL.
|
||||
- **Frontier**: list open issues with the map-membership label, paginate through
|
||||
all results, discard assigned issues, and GET each candidate's dependencies.
|
||||
A candidate is takeable when every dependency is closed. Order by issue
|
||||
creation/index ascending. Use names, with links, when presenting this result.
|
||||
- **Resolution**: publish the answer as a comment, link any committed research
|
||||
or prototype asset, close the child, then append one named link and a short
|
||||
gist to the map's `Decisions so far`. Read the latest map before editing so
|
||||
concurrent additions survive. The full decision stays on the child.
|
||||
|
||||
Canonical starting map:
|
||||
[Find the way to VoidKontrol v1: complete verified Swarm75 control on Void Linux](https://git.bongbetic.com/xavierk/voidkontrol/issues/1).
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
# Swarm75: read-only host and descriptor recheck
|
||||
|
||||
Observed on 2026-09-21 during initial VoidKontrol wayfinding. This is discovery
|
||||
evidence, not an authenticated control session or a hardware acceptance result.
|
||||
|
||||
## Findings
|
||||
|
||||
| Observation | Evidence |
|
||||
| --- | --- |
|
||||
| Host | `/etc/os-release`: Void Linux; `uname -r`: `7.2.6_1`; `getconf GNU_LIBC_VERSION`: `glibc 2.41` |
|
||||
| hidraw support | `/boot/config-7.2.6_1`: `CONFIG_HIDRAW=y`, `CONFIG_HID_GENERIC=m`, `CONFIG_USB_HID=m` |
|
||||
| Swarm identity | Both relevant sysfs HID devices report `HID_ID=0003:0000258A:0000010C`, `HID_NAME=BY Tech Kreo Swarm` |
|
||||
| Input ownership | Both sysfs devices report `DRIVER=hid-generic`; nothing was unbound or grabbed |
|
||||
| Interface 0 | Present as `/dev/hidraw4` at observation time |
|
||||
| Interface 1 | Present as `/dev/hidraw5` at observation time; sysfs USB interface suffix `:1.1` |
|
||||
| Access | Interface 1 node is `root:root`, mode `0600`; desktop-user `test -r` and `test -w` both fail |
|
||||
| Vendor usage | Interface 1 descriptor includes vendor application collections with usage page `0xff00`, usage `0x01` |
|
||||
| Descriptor | 240 bytes, SHA-256 `04f6ae259d80ba5828ae7f6b81cdcb2d31acf0b20dc93b473561cd8b3c930ab0` |
|
||||
|
||||
The node numbers are observations, not persistent identifiers. Discovery must
|
||||
reselect and revalidate the matching interface each time.
|
||||
|
||||
Parsing the descriptor's report-size and report-count items gives these payload
|
||||
sizes (excluding the report ID byte):
|
||||
|
||||
| Report ID | Input payload | Feature payload |
|
||||
| --- | --- | --- |
|
||||
| 1 | 1 byte including padding | — |
|
||||
| 2 | 2 bytes | — |
|
||||
| 3 | 3 bytes | — |
|
||||
| 4 | 15 bytes | — |
|
||||
| 5 | — | 5 bytes |
|
||||
| 6 | 7 bytes | 519 bytes |
|
||||
| 7 | 7 bytes | — |
|
||||
|
||||
Report 1 includes three meaningful system-control bits and padding, consistent
|
||||
with the original specification's description. The descriptor agrees with the
|
||||
declared report-6 transport size; that agreement does not establish authentication,
|
||||
command semantics, checksums, firmware identity, or safe persistence behavior.
|
||||
|
||||
## Correction to the initial specification
|
||||
|
||||
The earlier inference from `modprobe hidraw` was incorrect. Linux declares
|
||||
[`CONFIG_HIDRAW` as `bool`](https://github.com/torvalds/linux/blob/master/drivers/hid/Kconfig),
|
||||
so `CONFIG_HIDRAW=m` is not an alternative and a missing standalone module is
|
||||
not proof that the running kernel lacks hidraw. Current kernel configuration
|
||||
and existing nodes directly establish its presence here.
|
||||
|
||||
## Reproduction and boundaries
|
||||
|
||||
Inspect `/sys/class/hidraw/*/device/uevent` and resolve their symlink targets to
|
||||
identify the Swarm interfaces. Read the selected device's `report_descriptor`
|
||||
attribute, sum report-size × report-count bits by report ID and main-item type,
|
||||
and hash the descriptor with SHA-256. Query node properties with `udevadm info`
|
||||
and inspect access without opening the device for control.
|
||||
|
||||
Only kernel configuration, sysfs metadata, descriptor bytes, and filesystem
|
||||
permissions were read. No feature reports were sent, no normal input events
|
||||
were read, no permission rules were installed, and no device settings changed.
|
||||
Ordinary typing continuity was not measured by an interactive acceptance test.
|
||||
|
||||
## Evidence still required
|
||||
|
||||
- Confirm the physical connection and keyboard layout, including special controls.
|
||||
- A deliberately scoped official Kontrol authentication and configuration-read
|
||||
capture for this device and transport.
|
||||
- Exact framing/authentication/checksum and complete configuration-read coverage.
|
||||
- Later, explicit reversible write/readback/persistence/restore verification for
|
||||
every feature advertised as supported.
|
||||
|
||||
Tracked by [Obtain authenticated Swarm75 evidence without interrupting normal input](https://git.bongbetic.com/xavierk/voidkontrol/issues/5).
|
||||
Reference in New Issue
Block a user