1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//! Per-version label dispatcher.
//!
//! `source_label_for(source, version)` is the only public seam between
//! [`crate::schema::project`] (which serializes the `source` field on
//! tasks and decisions) and the per-version label tables in [`super::v1`]
//! / [`super::v2`]. Adding a new schema version means: add a `vN.rs` file
//! with a `source_label` fn, add one match arm here, bump
//! [`super::CURRENT_VERSION`].
//!
//! Versions newer than the highest-known one fall through to the latest
//! match arm — never silently misrepresent: callers must validate via
//! [`super::validate_schema_version`] *before* serializing.
use crateTaskSource;
/// Resolve the JSON `source` string for a given source + schema version.
///
/// Validation lives in [`super::validate_schema_version`] — by the time
/// this is called the version is already proven to be in the supported
/// range. The wildcard arm picks the newest version's labels so newly
/// added versions don't need a default branch.
pub const
/// Build a task's fully-qualified name: `<scope>:<kind>#<name>`.
///
/// The `#` boundary separates the colon-joined structured prefix
/// (`scope:kind`, both colon-free) from the verbatim task name, which may
/// itself contain `:` (e.g. an npm script `fmt:update`). Consumers split
/// once on `#`: everything after is the name, unescaped. Centralised here
/// so `why` and `doctor` can't drift apart on the format.
pub