Smoke and heat shift plan for farm, contractor and utility line crews in California: enter a place and a shift, get the hour Cal/OSHA requires N95s (§5141.1, AQI 151) or shade and water (§3395, 80°F),
翻译准备中
健康Jupyter Notebook · SwiftGitHub @fortunto2在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Crew Air: smoke and heat forecasts turned into a Cal/OSHA shift plan. Stanford Cleantech Hackathon 2026
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Smoke and heat forecasts turned into a shift plan, so the job site keeps working and stays within the law.
Stanford Cleantech Hackathon 2026 · submitted to Track 3 Resilient Systems (line crews after a fire; the same hours for a home and a building, airsignal.app/crew/grid) · Live: airsignal.app/crew · Devpost · Deck (PDF) · PPTX · Explainer video · pitch/ · Write-up on rustman.org
California already writes down what an outdoor employer must do: at PM2.5 AQI 151 provide N95s and tell the crew (Cal/OSHA §5141.1), at 80°F shade and water, at 95°F high-heat procedures (§3395). Almost nobody does it.
Inspection waits for complaints, and workers are afraid to complain.
work/sky_eval.py, work/sky_eval.md); its visibility estimate was unreliable, so the verdict
rests on the smoke question and visibility shows only when confident. Visible smoke under a forecast
below AQI 101 is flagged as "looks worse than the forecast" and pre-fills a report.curl 'https://airsignal.app/api/crew?place=Fresno&shift=07-17' # plan + checks + BMS, home, alerts, wind, fires_near, dispatch (JSON)
# every endpoint: https://airsignal.app/api · a utility's 13 cities: https://airsignal.app/crew/grid
curl 'https://airsignal.app/api/crew/reports?place=Fresno' # today's reports
curl -H 'content-type: image/jpeg' --data-binary @sky.jpg \
'https://airsignal.app/api/sky-check?place=Fresno' # Jev on a sky photo
make plan P="Fresno" S=07-17 # the same engine idea in Python
make test # Python rules + NowCast tests
make evidence # the 4.5M worker-days table
| Piece | Where | Built during the hackathon |
|---|---|---|
| Engine: NowCast, rulebook, plan, BMS, fire and monitor checks | airq airq-core/src/crew.rs (Rust → WASM) | yes, all of it |
| Page, API, reports, escalation mock, sky check | air-signal-web src/pages/crew.astro, src/lib/crew.ts, src/pages/api/crew/, src/pages/api/sky-check.ts | yes, all of it |
| Python CLI + rulebook YAML + tests, evidence script | this repo: crewair/, rulebooks/, tests/, work/ | yes |
| iOS app: Plan, Sky (AR horizon + Jev check), Report, crew lead | this repo: ios/ (make -C ios gen test build install) | yes |
| Evidence and the Jev eval | this repo: work/evidence_*.py, work/sky_eval.py | yes |
| Pitch | pitch/ | yes |
Every commit for the above is dated 23–24 Oct 2026 inside hacking hours (Fri 17:00 – Sat 17:00 PT).
After the event the iOS code continues in air-signal-ios (private, Crew Air plus a consumer app on a shared core); ios/ here stays as built in the 24 hours.
Earlier open-source work it stands on, disclosed: the Air Signal site's hosting and layout
(airsignal.app, air-signal-web), and from the
airq-core library the EPA AQI breakpoints, the sensor/model merge
(merge.rs) and haversine. The iOS AR overlay adapts camera-geometry code from our app
Starlapse. The app's usage counter is our shared package
superduperai-analytics-swift (three events, an
install UUID, August 2026). All four are public repositories by the same author, older than the event. The
rest is new.
The engine knows no law. A rulebook names a metric (us_aqi_pm25, pm25_nowcast_ugm3, pm25_ugm3,
temp_f, temp_c), a threshold, the action and the citation. Smoke rules use the NowCast concentration as
§5141.1 Appendix A does (55.5 and 500.5 µg/m³): an AQI threshold of 501 can never trip, the scale stops at
500. A new state or country is a new file, not new code: Oregon and Washington have smoke rules, Canadian
provinces use AQHI, Spain and Italy restrict outdoor work in heatwaves. Only California ships.
| Source | Key | Use |
|---|---|---|
| Open-Meteo (CAMS air quality + weather) | none | hourly PM2.5 and temperature; free only non-commercially |
| NASA FIRMS VIIRS, public 24 h CSV (NOAA-20, Suomi-NPP) | none | fires within 50 km |
| AirNow hourly files (files.airnowtech.org) | none | regulatory monitors within 25 km |
| EPA AirData, BLS QCEW | none | the evidence table |
| DOL OSHA enforcement API | free key | §5141.1 / §3395 / §3396 citations (work/evidence_citations.py) |
| TypeSafe Jev | key (Worker secret) | sky photo → smoke / visibility probabilities |
| Earth Engine, Sentinel-2 | gcloud login | burn scar and fire front for the pitch (work/) |
| NOAA HRRR-Smoke | none | next: 3 km smoke over the US instead of CAMS ~40 km |
Free for crews, paid by employers, public data. The engine, rulebooks and worker app are open source (AGPL for airq-core and the site, MIT here). Employers pay per site for alerts in Spanish and English, many sites, the archive an inspector or insurer asks for, and the BMS feed. Raw reports stay private; exposure and report counts by county are published anonymized.
work/ holds the GEE 101 workshop run locally plus two scripts on the largest fire in California on 20 Oct
2026 (NASA FIRMS, near Sequoia): fire_s2.py pulls a Sentinel-2 scene, burn_scar.py computes dNBR.
Auth: ee_init.py uses your gcloud login (EE_ACCOUNT, EE_PROJECT).
Plan and status: docs/next.md. Event notes: docs/event.md, tracks and decision: docs/tracks.md.
A planning aid, not legal advice.
MIT