Add battery_state.v1 and temporal_context.v1
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Ambito
- data, documentation, mobile, testing-qa
Direzione di ricerca
Inizia leggendo il lavoro bloccato sul registro degli schemi in #10 e gli assurance gate dei collector in #11. Poi segui i moduli Android, le voci del registro, i controlli Web, i decoder Python, i fixture Parquet e le aree della documentazione indicate nell’issue. Il lavoro è completato quando entrambi i collector funzionano in modo indipendente per tutto il loro ciclo di vita, soddisfano i fixture e le barriere di frequenza elencati e producono esportazioni tipizzate e informative deterministiche.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Scope narrowed. The Android field-matrix and real-device evidence regime has been
removed from this issue. What remains is the work that a build, a test, or a checked-in
artifact can settle.
Summary
Add two separate, low-rate quality-context collectors: battery_state.v1 and temporal_context.v1.
They share one implementation issue because both help researchers interpret collection quality, but they must remain distinct collector IDs/modules, schemas, configuration controls, disclosures, and Parquet partitions. Neither collector may be used to infer location, travel, presence, or participant behavior.
Requirements
battery_state.v1
- Record a bounded snapshot at collector start and event-driven changes for:
- battery percentage;
- charging state;
- charging source using a strict enum with an explicit unknown value;
- system power-save mode.
- Use typed fields and units from #10, including explicit unavailable/unknown semantics.
- Suppress equivalent consecutive states and enforce a conservative maximum event rate even when the OS emits noisy broadcasts.
- Do not collect battery serial, hardware/device identifiers, voltage, current, charge counter, temperature, health, cycle count, or capacity estimates in this first version.
- Do not claim that charging source or power-save state proves participant intent or device usage.
- Require no new network destination or direct storage access.
temporal_context.v1
- Record a temporal-context snapshot when the study first starts.
- Record event-driven changes when Android reports wall-clock or time-zone changes.
- Include:
- canonical time-zone ID;
- UTC offset in an integer physical unit;
- DST-active state;
- fixed reason code such as study start, wall-clock changed, time zone changed, or unknown OS signal;
- the normal Protocol v1 wall/continuous time and boot-session context.
- Do not infer why the change occurred, whether it represents travel, or whether the participant changed it manually.
- De-duplicate equivalent snapshots and apply a strict event-rate bound.
- Define behavior for invalid/unknown zone IDs, ambiguous local times, reboot boundaries, and rapid change bursts.
Product and analysis integration
- Add separate registry entries, compiled Android modules, Web controls, required/optional hardware/access validation, and English/Traditional Chinese consent disclosure.
- Add strict Python decoders, typed Parquet schemas/fixtures, data-dictionary entries, and quality-summary integration.
- Use only the shared collector event sink, clock, lifecycle, and access contracts.
- Pass the assurance gates in #11, including long-running, reboot, pause/withdraw, access-state, rate, and storage behaviour.
Acceptance criteria
- Each collector can be configured, disclosed, started, paused, resumed, finished, withdrawn, exported, verified, and materialized independently.
- Initial state is recorded exactly once per valid collector start/recovery transition under the documented lifecycle semantics.
- Duplicate/noisy OS signals cannot exceed registry bounds or produce unbounded identical events.
- Battery fixtures cover charging sources, unknown values, power-save changes, missing properties, and malformed platform input.
- Temporal fixtures cover study start, wall-clock changes, time-zone changes, DST transitions, unknown zones, rapid changes, and reboot/boot-session boundaries.
- Pause/withdraw barriers prevent post-barrier events from entering the research stream.
- Python and Parquet fixtures preserve declared units/types and produce deterministic quality context.
- No event, log, disclosure, or documentation suggests battery state or time zone is proof of activity, location, or travel.
Documentation
Update the collector catalog, researcher and participant guides, consent text, collector implementation guide, data dictionary, threat model, quality-metric definitions, platform matrix, and analysis examples.
Dependencies
Blocked by #10 (schema registry) and #11 (collector assurance gates).
- Lingua principale
- Kotlin
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JacobLinCool/particeps
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
JacobLinCool/particeps#33 · 2 commenti ·
-
area: ios P3
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
JacobLinCool/particeps#21 ·
-
area: ios area: protocol P3
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
JacobLinCool/particeps#20 ·
-
area: collector P2
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
JacobLinCool/particeps#18 ·
-
Add gyroscope.v1Apertaarea: collector P2
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
JacobLinCool/particeps#17 ·
Tutte le issue di JacobLinCool/particeps
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
commons-app/apps-android-commons#7072 ·
I maintainer di solito rispondono entro 1 giorno
-
bug ci good first issue help wanted severity: medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dhananjay-nautiyal/music#17 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Watch Next: last engagement time is in seconds for played items and in milliseconds for the othersAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 79/100
damontecres/Wholphin#2112 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
beppe2880/opencode-mobile#60 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100