Standing requirement — 2026-09-11
The phone is the user's current workbench, not the specification or the limit of Idriç's device examples. A device operation discussed while experimenting on Android must be translated into the corresponding ordinary-system targets rather than silently becoming Android-only.
In particular, difficulty showing a red screen from a tiny ARM/Thumb executable on the phone must not cancel the ARM/Thumb Linux or x86 Linux program. Bionic, Termux, and PRoot experiments may improve the phone path, but neither Linux target depends on those experiments succeeding.
This issue registers implementation targets and acceptance requirements. It is not an assertion that these programs, guests, or checks have already been built or run. Reuse any existing exact-revision evidence after inspection; do not infer support from this inventory.
Independent target profiles
Every example below must retain these target entries:
| Profile |
Required meaning |
| ARMv7 / Thumb-2 / ordinary Linux |
A real ARM/Thumb executable, built and run in a full-system cloud guest with a conventional Debian userspace/filesystem and a declared Linux kernel/device configuration. This is not Android under another directory tree. |
| x86-64 / ordinary Linux |
Its own native x86-64 executable and full-system cloud guest with conventional Debian userspace/filesystem and declared devices. Additional direct Debian-host execution is useful but must not silently replace the requested emulated-system coverage. |
| Android phone |
A separately identified phone implementation, recording the actual ABI, runtime/API or helper, permissions, and device support. Keep direct ARM/Thumb development and any DEX/ART + JNI application-delivery path separately labeled. |
Record ISA/instruction mode, ABI, kernel, userspace/libc or no-libc choice, filesystem layout, device interface, privilege/session requirements, and execution environment separately. Similar directory names do not establish the same device interface. A conventional Debian filesystem alone does not assert that a display, camera, GPIO controller, or sensor is present and usable.
The user's existing Debian runner policy remains in force: isomorphisms/ai-ci#83. Select and pin actual guest images/kernel configurations during implementation; this issue does not claim that a guest image is provisioned.
Canonical example inventory
These are program targets, not merely prose examples or byte-buffer generators.
| Family |
Programs to preserve |
Observable acceptance direction |
| Screen |
Show the whole selected display red; show half red / half blue; timed colour changes |
Verify presented guest display output, dimensions, split boundary, duration/sequence and cleanup. A generated image file or a coloured buffer alone is a lower-level test, not display acceptance. |
| Sound / speaker |
A tone; two different tones with pauses; the previously discussed short Beethoven-like rhythm |
Capture output downstream of the selected emulated audio device and check pitch, silence and duration. Buffer generation and actual speaker/audible output are separate evidence. Do not silently equate PCM playback with a PC-speaker mechanism. |
| Sensors |
Read an accelerometer and other available sensors, once and as a stream |
Preserve sensor identity, units, axes where relevant, timestamps and sample/error behavior; use known injected samples for simulator tests and separate physical-device receipts. |
| Camera |
Capture one frame and a short frame stream |
Check dimensions, format, frame identity/order and cleanup. A declared virtual camera/test source is valid virtual-device evidence, not a physical camera result. |
| Microphone |
Capture samples, including a bounded recording |
Check captured data and timing from a declared input source; distinguish virtual input from physical microphone capture. |
| Visible light |
Turn the flashlight/LED on and off; a timed pulse |
Observe state transitions and off/release behavior. Keep camera-flash torch access, LED control and GPIO-driven lighting as different implementations where applicable. |
| Infrared |
Turn an infrared emitter on/off or send an explicitly defined pulse sequence |
Name emitter/controller capability and inspect transitions/timing. Do not assume the phone or ordinary PC contains an IR emitter; do not substitute a visible flashlight. |
| GPIO |
Drive a selected output high/low; pulse it; read an input and wait for an edge |
Name chip/line, direction, polarity, ownership and timing; distinguish a simulated line trace from measured physical voltage/edges. |
New device examples discussed later join the same target accounting. Do not remove an inconvenient example or target merely to make an aggregate report green.
Source and implementation structure
Idriç owns the operation's meaning and shared behavioral fixtures. ARM and x86 owners provide their own code generation, ABI handling and platform implementations. Android-specific adapters remain Android-specific.
The ordinary source should express the action—show a colour, play a tone, read a sensor, capture a frame, switch a light, drive a pin. Raw ioctl, syscall numbers, register layouts, Binder/NDK details and foreign calls belong in the inspectable implementation beneath that action, not as mandatory top-level vocabulary.
This fits the ordinary file/module mechanism selection in #75. It does not require a universal POSIX-fd abstraction, an Android runtime copied onto Debian, or new Adriç compiler features before useful work begins.
Preserve the tiny native-program investigation as a distinct implementation form: hand-written assembly and small syscall-level executables are useful concrete probes. An assembled Thumb probe is not proof that Idriç's compiler emitted it. Retain source/compiler/backend identity and disassembly where native codegen is claimed. A practical library or Android helper is a separately named mechanism, not a silent replacement for the requested direct native target. No new RefC/generated-C dependency is authorized (#38).
Evidence must say what ran
Keep independent facts for:
- source/semantic fixture checks;
- compilation/linking and target-code inspection;
- user-mode emulation or direct host execution;
- full-system guest execution through a named kernel/device interface;
- simulated/injected versus passed-through physical device;
- physical phone or other physical-device observation.
Record exact source/compiler/backend revisions, binary hash, guest image/kernel identity, emulator version and machine/device arguments, execution mode/acceleration, fixture identity and resulting capture/log.
A full guest may use a simulated camera, audio source, sensor or GPIO controller where suitable. Identify the exact model and exercised boundary. If a model is missing, record implementation/model work or a narrower fixture as pending; do not call a mocked return value hardware support. Real hardware remains a separate target obligation, not a reason to abandon cloud tests.
For each example/profile keep an implementation state, execution state and blocker/evidence reference. NOT_BUILT, NOT_RUN, BLOCKED, failed checks and absent hardware must remain visible. A successful test of the permission-denied path is not successful execution of the requested operation. Android being blocked must not mark the Linux targets not-applicable; lack of hardware in one guest must not remove the program from the inventory.
Cross-repository ownership
Implementation checklist
Technical boundary references
No runtime support or new passing acceptance result is claimed by opening this issue.
Standing requirement — 2026-09-11
The phone is the user's current workbench, not the specification or the limit of Idriç's device examples. A device operation discussed while experimenting on Android must be translated into the corresponding ordinary-system targets rather than silently becoming Android-only.
In particular, difficulty showing a red screen from a tiny ARM/Thumb executable on the phone must not cancel the ARM/Thumb Linux or x86 Linux program. Bionic, Termux, and PRoot experiments may improve the phone path, but neither Linux target depends on those experiments succeeding.
This issue registers implementation targets and acceptance requirements. It is not an assertion that these programs, guests, or checks have already been built or run. Reuse any existing exact-revision evidence after inspection; do not infer support from this inventory.
Independent target profiles
Every example below must retain these target entries:
Record ISA/instruction mode, ABI, kernel, userspace/libc or no-libc choice, filesystem layout, device interface, privilege/session requirements, and execution environment separately. Similar directory names do not establish the same device interface. A conventional Debian filesystem alone does not assert that a display, camera, GPIO controller, or sensor is present and usable.
The user's existing Debian runner policy remains in force: isomorphisms/ai-ci#83. Select and pin actual guest images/kernel configurations during implementation; this issue does not claim that a guest image is provisioned.
Canonical example inventory
These are program targets, not merely prose examples or byte-buffer generators.
New device examples discussed later join the same target accounting. Do not remove an inconvenient example or target merely to make an aggregate report green.
Source and implementation structure
Idriç owns the operation's meaning and shared behavioral fixtures. ARM and x86 owners provide their own code generation, ABI handling and platform implementations. Android-specific adapters remain Android-specific.
The ordinary source should express the action—show a colour, play a tone, read a sensor, capture a frame, switch a light, drive a pin. Raw
ioctl, syscall numbers, register layouts, Binder/NDK details and foreign calls belong in the inspectable implementation beneath that action, not as mandatory top-level vocabulary.This fits the ordinary file/module mechanism selection in #75. It does not require a universal POSIX-fd abstraction, an Android runtime copied onto Debian, or new Adriç compiler features before useful work begins.
Preserve the tiny native-program investigation as a distinct implementation form: hand-written assembly and small syscall-level executables are useful concrete probes. An assembled Thumb probe is not proof that Idriç's compiler emitted it. Retain source/compiler/backend identity and disassembly where native codegen is claimed. A practical library or Android helper is a separately named mechanism, not a silent replacement for the requested direct native target. No new RefC/generated-C dependency is authorized (#38).
Evidence must say what ran
Keep independent facts for:
Record exact source/compiler/backend revisions, binary hash, guest image/kernel identity, emulator version and machine/device arguments, execution mode/acceleration, fixture identity and resulting capture/log.
A full guest may use a simulated camera, audio source, sensor or GPIO controller where suitable. Identify the exact model and exercised boundary. If a model is missing, record implementation/model work or a narrower fixture as pending; do not call a mocked return value hardware support. Real hardware remains a separate target obligation, not a reason to abandon cloud tests.
For each example/profile keep an implementation state, execution state and blocker/evidence reference.
NOT_BUILT,NOT_RUN,BLOCKED, failed checks and absent hardware must remain visible. A successful test of the permission-denied path is not successful execution of the requested operation. Android being blocked must not mark the Linux targets not-applicable; lack of hardware in one guest must not remove the program from the inventory.Cross-repository ownership
Implementation checklist
Technical boundary references
No runtime support or new passing acceptance result is claimed by opening this issue.