Repository navigation
Expand file tree
/
Copy pathinconsistencies.yml
More file actions
95 lines (93 loc) · 4.78 KB
/
Copy pathinconsistencies.yml
File metadata and controls
95 lines (93 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# Known inconsistencies between the phyphox implementations.
#
# One entry per divergence. Each entry renders in two places from this single
# source: an inline warning wherever the affected page writes the marker
#
# {{inconsistency:<id>}}
#
# and a row in the generated "Known inconsistencies" page. See tools/hooks.py.
#
# Fields
# id short slug, used in the marker. Required.
# title one line, shown as the admonition heading. Required.
# area file-format | remote-interface | editor. Required.
# status open - nobody has decided which behavior is correct yet
# decided - canonical behavior chosen, implementations not yet fixed
# There is no "fixed" status: once every implementation agrees,
# delete the entry (and its markers and spec references) in the
# same commit as the fix. Readers learn about corrected behavior
# from the release changelog; a lingering "recently corrected"
# note only clutters the documentation.
# canonical what the correct behavior is. Required once status is decided.
# affects map of implementation -> observed behavior. Use the keys
# android, ios, editor, arduino, micropython, wiki.
# since optional: format version or app version the divergence appeared in
# issue optional: URL of the tracking issue
# verified optional: when and against which builds the divergence was
# actually observed on hardware, as opposed to read out of the
# source. Absence means nobody has checked on a device.
# summary reader-facing explanation, one short paragraph. Required.
#
# Keep entries factual and cite where the behavior was observed, so the next
# person can re-check it rather than trusting this file.
- id: meta-sensors
title: Sensor metadata in /meta
area: remote-interface
status: decided
permanent: true
canonical: >-
Android-only, by platform limitation rather than by choice. iOS offers no API
for per-sensor information such as model or manufacturer, so the values cannot be
supplied there. The sensors object is therefore simply absent on iOS rather
than present and empty.
affects:
android: >-
Adds a "sensors" object with one entry per sensor, each carrying name,
vendor, range, resolution, minDelay, maxDelay, power and version
(RemoteServer.java, handleMeta()).
ios: >-
Serves only the non-sensor metadata; no "sensors" key
(ExperimentWebServer.swift, "for metadata in Metadata.allNonSensorCases").
verified: >-
Confirmed on hardware 2026-08-02: Android 1.2.1-beta2 (build 1020102,
Pixel 9 Pro, from development) against iOS 1.2.0 (build 17272,
iPhone15,2, App Store build). The iOS WebServer sources are identical
on master and development, so the store build behaves as the
development branch here.
summary: >-
Android reports per-sensor metadata over /meta and iOS does not, even though
iOS models the same values (Metadata.sensor) and serves them to network
connections. A client cannot tell a phone without the data from a phone that
does not report it.
- id: fft-non-power-of-two-input
title: FFT output for input lengths that are not a power of two
area: file-format
status: decided
permanent: true
canonical: >-
fft and ifft use the fastest transform each platform offers, so only a
power-of-two number of input samples is guaranteed to give identical
results on both platforms - an experiment that needs a portable fast
transform must provide that. Any other length is implementation-defined.
The exact transforms of arbitrary length are the dft and idft modules
(file format 1.21), which are slower but return exactly as many values
as they are given on every platform; an experiment with a
non-power-of-two length uses those.
affects:
android: >-
FFTW transforms the input length directly, and the Java fallback
zero-pads internally but truncates back, so the output length always
equals the input length (analysis.cpp fftw3complex, Analysis.java
fftAM); ifft goes through the same code with the opposite kernel
sign (since 2026-10-05, development).
ios: >-
vDSP_DFT only accepts lengths of the form f*2^n with f in {1, 3, 5,
15}, so other inputs are zero-padded to the next supported length and
the padded, longer spectrum is returned (FFTAnalysis.swift,
nextFFTSize). ifft is specified under the same contract and not yet
implemented.
summary: >-
A non-power-of-two number of input samples yields a different output
length and different values on the two platforms; a power-of-two input
gives identical results on both. This holds for fft and for its inverse
ifft alike; dft and idft have no such restriction.