physics-lint / CONTRIBUTING.md
nickh007's picture
docs: complete the card + contributing guide + completeness guard
bf9fb2c verified
|
Raw
History Blame Contribute Delete
1.95 kB
# Contributing to the physics-lint Space
The one non-negotiable rule:
> **The numbers on the page come from `demo_logic.py`, which imports no UI
> framework.**
Everything a visitor sees is produced by code the test suite exercises
directly. `app.py` and `index.html` arrange it; they never compute it. If a
number could only be produced by the UI layer, it is a number nobody has
tested, on the most public surface in the portfolio.
## What a good contribution looks like
- **A clearer refusal.** An upload the Space accepts and reports on without
really validating, or a message that says what went wrong without saying what
to do about it.
- **A better negative control.** The *run the negative control* button exists
because a checker reporting 100% compliance is indistinguishable from one that
has quietly stopped working. Both directions are shown — a law that stops
rejecting violators has gone blind, one that starts rejecting good networks
has gone hysterical — and anything that strengthens that is welcome.
- **A counterexample to the certified bound.** The sliders exist so a skeptical
reader can try to refute it. Sampling cannot prove the bound; if you find a
layout that exceeds it, that is the most useful thing you could send.
## Before you open a PR
```bash
pip install -r requirements.txt
python -m pytest tests/ -q # 35 passed
python -u app.py # http://127.0.0.1:7860
```
The Gradio Lite version in `index.html` is **pinned**, because newer releases
currently fail to resolve their own `huggingface-hub` dependency inside Pyodide
— which shows up as a micropip error in the browser console rather than as
anything on the page. If you bump it, boot the built page and confirm all three
tabs work before submitting.
Every number shown must be reproducible by running the published code. The one
exception in the portfolio is labelled where it appears; do not add a second.