Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 15 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -336,17 +336,6 @@ jobs:
path: frontend/app/playwright-report/
retention-days: 7

# #49's performance benchmark: frame times during pan, zoom and drag over 200
# boxes and 20 polygons of 32 vertices on a 4K asset, plus a CPU-throttling
# ladder that says how much headroom each gesture has.
#
# Manual only, which the issue explicitly blesses ("regression check kept cheap;
# manual trigger is fine for the beta"). Two reasons it is not on the PR path:
# the numbers are a property of the machine, and the run takes about a minute of
# deliberately serialized work — one worker, no retries, because a benchmark
# sharing a runner with itself is not measuring anything.
#
# The recorded baseline lives in `docs/annotations.md` and was taken on a
# #66: the delivery thesis, built and then checked as an artifact. pip is the
# vehicle and the compiled UI travels inside the single wheel, and three things
# can be wrong with that wheel which no source test can see — the bundle is not
Expand Down Expand Up @@ -588,9 +577,23 @@ jobs:
- name: Sync environment with the format groups
run: uv sync --locked --group yolo --group coco

# No `-q`: `addopts` in pyproject.toml already carries one, and a second
# suppresses the count line — which is the line that would show this job
# quietly shrinking to nothing.
- name: The reference readers load the exports
run: uv run pytest tests/formats/test_yolo_smoke.py tests/formats/test_coco_smoke.py -q
run: uv run pytest tests/formats/test_yolo_smoke.py tests/formats/test_coco_smoke.py

# #49's performance benchmark: frame times during pan, zoom and drag over 200
# boxes and 20 polygons of 32 vertices on a 4K asset, plus a CPU-throttling
# ladder that says how much headroom each gesture has.
#
# Manual only, which the issue explicitly blesses ("regression check kept cheap;
# manual trigger is fine for the beta"). Two reasons it is not on the PR path:
# the numbers are a property of the machine, and the run takes about a minute of
# deliberately serialized work — one worker, no retries, because a benchmark
# sharing a runner with itself is not measuring anything.
#
# The recorded baseline lives in `docs/annotations.md` and was taken on a
# developer machine, which is what the acceptance criterion asks for. A run here
# answers a different question — "did this change make it worse on the same
# hardware as last time" — so compare a dispatch against a dispatch, never
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ without a server, an account, or your pixels leaving the machine.
| **Annotate** | boxes, polygons and classification tags in the browser, with undo/redo, keyboard-first tools, and a headless engine underneath that the UI is only one renderer of. |
| **Version** | schema versions are immutable and every label records the one it was judged against. A release freezes the whole thing into a manifest; publish twice from unchanged data and the bytes are identical. |
| **Split** | a stored recipe rather than a materialised assignment, keyed on **content hash** — so two copies of one image cannot straddle a train/test boundary. |
| **Export** | YOLO, COCO and Pascal VOC, each declaring what it can carry. VisionSet works out exactly what a format would drop *before* writing anything, and refuses to drop it silently. |
| **Automate** | one SDK under everything, reachable as a Python API, a REST API, a CLI, and 39 MCP tools an agent can drive. |
| **Export** | YOLO, COCO, Pascal VOC and [the lane family](docs/releases.md#the-lane-formats), each declaring what it can carry. VisionSet works out exactly what a format would drop *before* writing anything, and refuses to drop it silently. |
| **Automate** | one SDK under everything, reachable as a Python API, a REST API, a CLI, and an MCP server an agent can drive. |

## Quickstart

Expand Down Expand Up @@ -57,9 +57,9 @@ labelling:
"env": { "VISIONSET_WORKSPACE": "/path/to/workspace" } } } }
```

The whole cycle as tools, plus one that is offered only when the server is started with
`--allow-destructive` — because a `confirm` parameter is documented in the same listing an agent
reads before choosing, and four of four measured runs sent it on the first call. See
The whole cycle as tools, plus the two deletions that are offered only when the server is started
with `--allow-destructive` — because a `confirm` parameter is documented in the same listing an
agent reads before choosing, and four of four measured runs sent it on the first call. See
[docs/mcp.md](docs/mcp.md) for how a client is configured and why each tool exists,
[docs/mcp-tools.md](docs/mcp-tools.md) for the generated reference, or
[docs/mcp-walkthrough.md](docs/mcp-walkthrough.md) for a session start to finish — including what
Expand Down
6 changes: 4 additions & 2 deletions docs/architecture/backend/inference.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,10 @@ halves of that matrix, and the environment variable that keeps the with-runtime
half honest, are described in
[CONTRIBUTING](../../../CONTRIBUTING.md#the-two-halves-of-the-inference-matrix).

The optional dependency group is `local-inference`; `_extra.py` names what it
brings and turns a missing one into a sentence carrying the install command.
The optional **extra** is `local-inference` — an extra rather than a dependency
group, because a group is for developing this repository and this is something a
user installs. `_extra.py` names what it brings and turns a missing one into a
sentence carrying the install command.

## Where it sits

Expand Down
7 changes: 5 additions & 2 deletions docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,14 @@ serves nothing. See [CONTRIBUTING.md](../CONTRIBUTING.md#building-the-distributi

```bash
visionset --version # the version, and nothing else
visionset format list # coco, dummy, voc, yolo
visionset format list # the formats this installation can write
```

`format list` is the more useful of the two: it reads *installed* entry-point metadata, so a
non-empty answer proves the wheel is properly installed rather than merely importable.
non-empty answer proves the wheel is properly installed rather than merely importable. Run it
for the current set rather than trusting a list written down somewhere — third-party
distributions register into the same entry-point group, so what a given installation can write
is a property of that installation.

## ffmpeg, and when you need it

Expand Down
Loading