Repository navigation
verification: independent end-to-end checks (S4) #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
59 commits
Select commit
Hold shift + click to select a range
1cd340d
verification: add Simulator runner, STATE probe and UX checklist
SamGu-NRX 05f70dc
verification: time states by the log clock; fix probe argument
SamGu-NRX 78d6553
verification: check replay sessions against C3 and ground truth
SamGu-NRX 2a6d3f7
verification: add end-to-end server check
SamGu-NRX 42b9fdc
verification: probe checks the Simulator can read a host-path replay;…
SamGu-NRX e0959c2
verification: solver shim, per-use worktrees, margin rule for other u…
SamGu-NRX 328373d
verification: record load average with e2e latency
SamGu-NRX 2ae5a80
verification: add the scoreboard; e2e reports app exports
SamGu-NRX ede8be1
verification: regenerate scoreboard
SamGu-NRX c47c70e
verification: independent placement cases from the public goldens
SamGu-NRX 5ed6fda
verification: count contract problems apart from case expectations
SamGu-NRX 8610d63
verification: accessibility audit harness; probe gains a negative con…
SamGu-NRX 0d4f1d6
verification: fix cases that missed public rules; accept a named raw-…
SamGu-NRX 69592e6
verification: independent accessibility audit per screen
SamGu-NRX 6cf8692
verification: pick the JSON-answering upload endpoint; variants keep …
SamGu-NRX 0b21608
verification: scope app evidence to the app branch's runs; regenerate…
SamGu-NRX c692a8d
verification: goldens 07 and 09; cases can rule out one outcome and p…
SamGu-NRX 820ac91
verification: real-geometry scene from ETH3D facade
SamGu-NRX 9e25dbf
verification: regenerate scoreboard
SamGu-NRX fc1858e
verification: C5 check reads the review line; margin must be within e…
SamGu-NRX 9038202
verification: runner waits only for compiling builds; reports keep ev…
SamGu-NRX 1330a82
verification: start the product description of the capture app
SamGu-NRX e38ca04
verification: product description pilot, first Simulator pass, triage…
SamGu-NRX 7c2c9ab
verification: make sim-app and make e2e; reports record peak memory
SamGu-NRX e18a2eb
verification: product description and UX review at t3/ios-mvf 0876e03…
SamGu-NRX 60fe0d3
verification: recheck at t3/ios-mvf 525ea40; fix a race in the audit …
SamGu-NRX 4b4425b
verification: scoreboard with the slow probes run
SamGu-NRX 5e60831
verification: regenerate scoreboard
SamGu-NRX 30e866c
verification: recheck at t3/ios-mvf beede15
SamGu-NRX 97cebbf
verification: derive coverage radii from rules.yaml, add ordering, co…
SamGu-NRX 3b6459c
verification: widen each clearance's reach by the battery's error, ch…
SamGu-NRX 56bdde6
verification: recheck at t3/ios-mvf a39d0a5 and t3/server 739fb6f
SamGu-NRX 683a386
verification: read ru_maxrss in kilobytes on Linux
SamGu-NRX eb903b7
verification: friction audit of the homeowner's path at t3/ios-mvf a3…
SamGu-NRX 52aa87f
verification: recheck t3/server 779f0c3, hosted and 0bad4de; stale ro…
SamGu-NRX 29b7b7d
verification: final app run on the hosted API at t3/ios-mvf 194f2eb
SamGu-NRX 63350b1
verification: point the facade scene's rule sources at docs/04
SamGu-NRX e0e3ae6
verification: fix the review's nine findings; move the app reviews to…
SamGu-NRX 5f73553
verification: count a past-end request as covering what lies beyond t…
SamGu-NRX 4fe1e43
verification: cut the README to the experiment format; move what each…
SamGu-NRX 5df7468
verification: require views strictly past the needed height; credit w…
SamGu-NRX 3e95373
verification: check each sweep start alone; survive malformed answers…
SamGu-NRX 544db3b
verification: say that sweep coverage samples starts, not the server'…
SamGu-NRX c114db2
verification: facing and headroom need the band past the battery by t…
SamGu-NRX 1b62f94
verification: widen facing and headroom by the drifted error, as the …
SamGu-NRX de53ecd
verification: lay walls out and check declared heights as server 7133…
SamGu-NRX 1a0433e
verification: scoreboard and result at server 7133283
SamGu-NRX 77ae847
verification: a wall view without out_ft reached headroom height, as …
SamGu-NRX fcfecba
verification: claim only demonstrated reach in the ETH3D builder; owe…
SamGu-NRX 36ac02f
verification: scoreboard and result at server 9176125
SamGu-NRX 64d70d1
verification: app rows at t3/ios-mvf f14947e; read its bundle line; t…
SamGu-NRX 33811e4
verification: close three false certifications; pin to server 4a9fa44
SamGu-NRX 7761447
verification: sample ground cells at their centres as well as their e…
SamGu-NRX 371c512
verification: pin to server 86b2b4d; scoreboard and result
SamGu-NRX 21c8832
verification: a reject needs every start failing; a footprint needs i…
SamGu-NRX 255bc84
verification: pin to server 3baa338; accept a pass by the smallest re…
SamGu-NRX 379e5ad
verification: match server 3baa338's coverage, from the final Opus re…
SamGu-NRX b9f1601
verification: three more false certifications from Codex on 255bc84
SamGu-NRX fb20cf7
verification: app rows at #10's freeze c820cf1; band gaps under 0.01 …
SamGu-NRX File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| name: Verification | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| paths: | ||
| - "verification/**" | ||
| - ".github/workflows/verification.yml" | ||
| pull_request: | ||
| paths: | ||
| - "verification/**" | ||
| - ".github/workflows/verification.yml" | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| concurrency: | ||
| group: verification-${{ github.ref }} | ||
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||
|
|
||
| jobs: | ||
| verification-checks: | ||
| name: Verification checks | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 10 | ||
| defaults: | ||
| run: | ||
| working-directory: verification | ||
| steps: | ||
| # The default depth of 1 is enough: tests/test_gitref.py only reads HEAD, and a detached | ||
| # worktree of HEAD works in a shallow clone. | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | ||
| with: | ||
| persist-credentials: false | ||
| # Reads tool.uv.required-version from verification/pyproject.toml to pick the uv version. | ||
| - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 | ||
| with: | ||
| working-directory: verification | ||
| - run: uv sync --locked | ||
| - run: uv run ruff check . | ||
| - run: uv run ruff format --check . | ||
| - run: uv run pytest -q |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| # Independent verification. Every target runs from this folder; reports go to | ||
| # ~/house-scanning-data/reports/ (outside git) because runs can show dataset frames. | ||
|
|
||
| REF ?= origin/t3/ios-mvf | ||
| SERVER_REF ?= origin/t3/server | ||
| # Set SERVER_URL to use a running server (the hosted API) instead of starting one from SERVER_REF. | ||
| SERVER_URL ?= | ||
| SERVER = $(if $(SERVER_URL),--server-url $(SERVER_URL),--server-ref $(SERVER_REF)) | ||
| REPLAY ?= $(HOME)/house-scanning-data/replays/advio-20-0040-0075 | ||
| ARGS ?= | ||
|
|
||
| .PHONY: test sim sim-app sim-probe e2e scoreboard | ||
|
|
||
| test: | ||
| uv run ruff check . | ||
| uv run ruff format --check . | ||
| uv run pytest -q | ||
|
|
||
| # Build REF for the Simulator, run it with ARGS (e.g. ARGS="--replay <dir> --autopilot"), | ||
| # screenshot every STATE. | ||
| sim: | ||
| uv run python -m hsverify.simrun --ref $(REF) $(ARGS) | ||
|
|
||
| # The app at REF on the real ADVIO replay (C3), driven by its autopilot, uploading to the server | ||
| # started from SERVER_REF (or at SERVER_URL): a screenshot per STATE in ~/house-scanning-data/reports/sim/. Fails | ||
| # unless the run reaches the result state; the scan bundle is copied into the report as scan.zip. | ||
| sim-app: | ||
| uv run python -m hsverify.simrun --ref $(REF) --replay $(REPLAY) --autopilot \ | ||
| $(SERVER) --extra-arg=-autopilotHold --extra-arg=3 \ | ||
| --idle 60 --timeout 900 --require result --require-export --label replay $(ARGS) | ||
|
SamGu-NRX marked this conversation as resolved.
|
||
|
|
||
| # Every case in e2e/cases/ plus the ETH3D facade scene through the server's API at SERVER_REF; | ||
| # each result is validated against server/schemas/result.schema.json at the same ref. | ||
| e2e: | ||
| uv run python -m hsverify.e2e $(SERVER) --scene scenes/eth3d-facade/case.json $(ARGS) | ||
|
|
||
| # Self-test of the runner against a fixture app that logs a known STATE sequence. | ||
| sim-probe: | ||
| uv run python -m hsverify.simrun --ref HEAD --project verification/fixtures/state-probe/StateProbe.xcodeproj \ | ||
| --scheme StateProbe --until probe_done --extra-arg=-probeArg --label probe | ||
|
|
||
| # Every open PR with its CI, and every overnight-plan metric with its evidence or gap. Writes | ||
| # SCOREBOARD.md and scoreboard/scoreboard.json. ARGS=--slow also runs the slow test probes; | ||
| # ARGS="--slow S2-1" runs only that one. | ||
| scoreboard: | ||
| uv run python -m hsverify.scoreboard $(ARGS) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| # Verification (S4) | ||
|
|
||
| **Question.** Do the app and server branches do what the plan says? Pass: the app at | ||
| `t3/ios-mvf`'s head reaches a result from the real ADVIO replay and keeps its scan; every server | ||
| answer at `t3/server`'s head validates against the result schema and never passes without the | ||
| coverage its checks need; hostile inputs are refused, or answered with a valid result, within | ||
| 10 s and 500 MB of server growth; each plan metric has evidence at the current head. | ||
|
|
||
| **Run**, from `verification/`, with uv (and Xcode 26 with an iOS Simulator for `sim-app`): | ||
|
|
||
| ``` | ||
| make sim-app # REF=, SERVER_REF= or SERVER_URL= | ||
| make e2e # ARGS="--app-export <sim report>" | ||
| make scoreboard # writes SCOREBOARD.md | ||
| make test | ||
| ``` | ||
|
|
||
| Reports go to `~/house-scanning-data/reports/`, outside git, because replay frames come from | ||
| non-commercial datasets. What each check asserts is in the docstrings of `hsverify/e2e.py`, | ||
| `resultcheck.py` and `simrun.py`. | ||
|
|
||
| **Result.** At `t3/server` `3baa338`, with the app's upload from `c820cf1` (#10's freeze, synthetic | ||
| replay, hosted server), 49 of 50 scenes pass (45 answered and checked; slowest real scene 0.48 s). | ||
| The ETH3D scene fails: after its one requested capture the server leaves pool unsure with no | ||
| request or reason. | ||
|
|
||
| **What it changed.** S2 fixed seven defects it found: | ||
| - unseen ground passing the pool check; | ||
| - a short reach cutoff; | ||
| - unbounded input cost; | ||
| - incomplete photo requests; | ||
| - repeated requests past a wall end; | ||
| - ground past a real end ignored; | ||
| - a facing gap called too close to call. | ||
|
|
||
| The friction audit (#61) became team decision 8. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.