fulltime-plugin-api 0.1.0

Canonical league-data schema, data-provider WIT interface, and plugin manifest format shared by the FullTime plugin host and data-provider plugins.
Documentation
## 1. Crate Setup

- [x] 1.1 Scaffold the `fulltime-plugin-api` Rust crate (Cargo.toml, lib.rs, license, CI)
- [x] 1.2 Pin `wit-bindgen` and `wasmtime`-compatible tooling versions, documented in the
  crate's changelog

## 2. Canonical Schema

- [x] 2.1 Define the canonical competition and team types
- [x] 2.2 Define the canonical fixture/result type covering both league and
  knockout/group-stage matches
- [x] 2.3 Define the canonical standings type supporting single-table and group-based
  formats with a shared row shape
- [x] 2.4 Add the schema version identifier and document the major/minor compatibility
  policy
- [x] 2.5 Validate the schema against a real Bundesliga data shape (blocked on `Plugins/Bundesliga`
  reaching a working prototype; validate against `Libs/openligadb`'s existing response
  shapes in the meantime)

## 3. Data-Provider WIT Interface

- [x] 3.1 Author the WIT package: list-competitions, fetch-fixtures, fetch-results,
  fetch-standings, fetch-metadata
- [x] 3.2 Define structured error variants: network-failure, rate-limited,
  schema-mapping-failure
- [x] 3.3 Add the interface version identifier, independent of the schema version, and
  document the major/minor compatibility policy
- [x] 3.4 Generate and publish Rust bindings via `wit-bindgen`

## 4. Plugin Manifest Format

- [x] 4.1 Define the manifest schema (plugin ID, version, target schema version, target
  interface version, declared network hosts)
- [x] 4.2 Implement manifest parsing with field-presence and format validation
- [x] 4.3 Add structured parse errors identifying the invalid field, with no network or
  host-runtime side effects

## 5. Publishing

- [x] 5.1 Write crate-level documentation covering the schema, WIT interface, manifest
  format, and versioning policy for plugin authors
- [ ] 5.2 Cut an initial versioned release for `Apps/rust` and `Plugins/Bundesliga` to
  depend on