Foreword. Data Artifact: the machine-readable twin of VRS-IND-201 (VRS 2026 (draft)) — the sector criteria with their point ranges, rungs and tier ceilings, the contributing intrinsic criteria, the letter bands and the application classes — generated FROM the protocol’s Clause 5–7 by
tools/vrs-twin-generate.py. Consistency is by construction and re-verified on every build (conformance check 15). The JSON in Clause 4 is the normative payload; scorer tooling consumes it directly. A change to VRS-IND-201 and to this twin is one change instrument.
1 Scope
This Data Artifact carries the rubric data of the Industrial (IND) sector in machine-readable form: the 10 sector criteria of VRS-IND-201 Clause 6 with points, rungs and Unverified / Verified / Certified ceilings; the contributing intrinsic criteria of Clause 5; the letter bands and application classes of Clause 7. It states no independent requirements. Where this artifact and VRS-IND-201 could be read to differ, VRS-IND-201 governs and this twin is regenerated to match.
2 Normative references
- VRS-IND-201, Industrial — AR Assessment Protocol — source protocol twinned (Clauses 5–7).
- VRS-IND-001, Industrial — Sector Standard — application classes and hazard groups.
- VRS-GEN-005, IR Methodology — point sum, tier ceilings, no-evidence rule.
- VRS-GEN-006, AR Scheme — pool mechanics, letter bands, tier caps by construction.
- VRS-GEN-002, Designation and Drafting Rules — criterion layout (§6.5) and versioning.
3 Terms and definitions
The terms of VRS-GEN-001 and VRS-IND-201 apply. data twin — a machine-readable artifact regenerated one-to-one from a source protocol’s normative clauses. rung — a named state of a criterion awarding a stated integer number of points (VRS-GEN-002 §3.9). ceiling — the maximum points a criterion awards at a stated tier (VRS-GEN-002 §3.10).
4 Payload
Sector criteria total 100 points; ceilings Unverified 70, Verified 85, Certified 100.
{
"_meta": {
"description": "IND sector AR rubric data twin — machine-readable form of VRS-IND-201 Clause 5/6/7 (VRS 2026 (draft)). Generated by tools/vrs-twin-generate.py; never hand-edited.",
"edition": "VRS 2026 (draft)",
"source_protocol": "VRS-IND-201 v1.0.0",
"generated": "2026-09-16",
"conforms_to": "VRS-GEN-005 §6 (point sum, tier ceilings); VRS-GEN-006 §6–§8 (pool, bands, tier caps by construction)"
},
"sector_code": "ind",
"bands_percent": {
"AAA": 90,
"AA": 75,
"A": 60,
"B": 45,
"C": 0
},
"application_classes": [
"mobile",
"manipulator",
"legged-other (VRS-IND-201 §7 class table)"
],
"contributing_ir_criteria": [
{
"id": "SF-1",
"document": "VRS-GEN-101",
"clause": "6.1"
},
{
"id": "SF-2",
"document": "VRS-GEN-101",
"clause": "6.2"
},
{
"id": "SF-4",
"document": "VRS-GEN-101",
"clause": "6.4"
},
{
"id": "SF-7",
"document": "VRS-GEN-101",
"clause": "6.7"
},
{
"id": "SF-8",
"document": "VRS-GEN-101",
"clause": "6.8"
},
{
"id": "RL-3",
"document": "VRS-GEN-102",
"clause": "6.3"
},
{
"id": "RL-4",
"document": "VRS-GEN-102",
"clause": "6.4"
},
{
"id": "SV-1",
"document": "VRS-GEN-103",
"clause": "6.1"
},
{
"id": "SV-4",
"document": "VRS-GEN-103",
"clause": "6.4"
},
{
"id": "SV-5",
"document": "VRS-GEN-103",
"clause": "6.5"
},
{
"id": "SV-6",
"document": "VRS-GEN-103",
"clause": "6.6"
},
{
"id": "CY-3",
"document": "VRS-GEN-105",
"clause": "6.3"
},
{
"id": "CY-4",
"document": "VRS-GEN-105",
"clause": "6.4"
},
{
"id": "MS-1",
"document": "VRS-GEN-106",
"clause": "6.1"
},
{
"id": "SI-2",
"document": "VRS-GEN-104",
"clause": "6.2"
},
{
"id": "SI-6",
"document": "VRS-GEN-104",
"clause": "6.5"
}
],
"sector_criteria": [
{
"clause": "6.1",
"id": "IND-1",
"name": "Anchor-regime conformity",
"points_max": 15,
"what_is_measured": "Conformity of the declared application class with its anchor regime. **Anchors per class (F22):** mobile — ISO 3691-4:2023 (+ ANSI/ITSDF B56.5, RIA R15.08); manipulator — ISO 10218-1/-2:2025 (+ ISO/TS 15066 values); legged / other — *no recognised anchor*: scored on ISO 12100 risk assessment + functional-safety evidence (ISO 13849-1 / IEC 62061) using the same rungs.",
"rungs": [
{
"points": 15,
"state": "third-party-assessed conformity and functions validated at envelope limits"
},
{
"points": 13,
"state": "pack-evidenced (documents), not demonstrated"
},
{
"points": 12,
"state": "third-party-assessed conformity (publicly verifiable certificate) (F1/F17)"
},
{
"points": 11,
"state": "publicly evidenced only (no pack, no demonstration)"
},
{
"points": 10,
"state": "self-declared conformity with internal validation evidence"
},
{
"points": 5,
"state": "self-declaration only"
},
{
"points": 0,
"state": "none"
}
],
"ceiling": {
"unverified": 11,
"verified": 13,
"certified": 15
},
"company_wide": null,
"evidence_bar": "A declaration of conformity or equivalent exists for the rated version. Applies to all classes.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.2",
"id": "IND-2",
"name": "Protective stop at envelope limits",
"points_max": 15,
"what_is_measured": "Protective/safeguard stop performance at declared max speed **and** max payload **and** max slope **and** worst declared floor (limits, not nominal — IND-101 §4.1).",
"rungs": [
{
"points": 15,
"state": "stops within declared distance in all four witnessed"
},
{
"points": 12,
"state": "pack-evidenced (documents), not demonstrated"
},
{
"points": 10,
"state": "three"
},
{
"points": 8,
"state": "stop functions certified by an accredited third party with published stopping time/distance data at scenario limits (F17)"
},
{
"points": 5,
"state": "two, or nominal only"
},
{
"points": 0,
"state": "fewer or not established"
}
],
"ceiling": {
"unverified": 8,
"verified": 12,
"certified": 15
},
"company_wide": null,
"evidence_bar": "Envelope declared with numeric limits. Applies to all classes (for manipulators: stop at max speed/payload/reach).",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.3",
"id": "IND-3",
"name": "Human/obstacle detection at declared conditions",
"points_max": 12,
"what_is_measured": "Detection of a test obstacle of the declared minimum detectable size at declared max speed, including switching-field transitions and declared ambient-light boundary.",
"rungs": [
{
"points": 12,
"state": "detected and stopped in all declared conditions"
},
{
"points": 10,
"state": "pack-evidenced (documents), not demonstrated"
},
{
"points": 8,
"state": "nominal + one boundary"
},
{
"points": 4,
"state": "nominal only"
},
{
"points": 0,
"state": "not established. Applies to: mobile class only. Not applicable to manipulators (protection is PFL/SSM under IND-4) or to legged/other without a declared detection field — excluded from numerator and denominator (F12)"
}
],
"ceiling": {
"unverified": 8,
"verified": 10,
"certified": 12
},
"company_wide": null,
"evidence_bar": "Minimum detectable object size and ambient-light envelope declared.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.4",
"id": "IND-4",
"name": "Collaborative operation controls",
"points_max": 10,
"what_is_measured": "For declared collaborative modes: speed-and-separation zone behaviour and/or power-and-force limiting at declared limits (ISO/TS 15066 values as absorbed into ISO 10218:2025).",
"rungs": [
{
"points": 10,
"state": "all declared modes established at limits"
},
{
"points": 9,
"state": "pack-evidenced (documents), not demonstrated"
},
{
"points": 6,
"state": "established nominal"
},
{
"points": 3,
"state": "design evidence only"
},
{
"points": 0,
"state": "not established. Models declaring no collaborative mode: fixed 6 (non-collaborative by design, guarded per IND-1) — recorded as such"
}
],
"ceiling": {
"unverified": 6,
"verified": 9,
"certified": 10
},
"company_wide": null,
"evidence_bar": "Collaborative modes declared (or explicitly declared absent).",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.5",
"id": "IND-5",
"name": "Degraded-sensing behaviour",
"points_max": 8,
"what_is_measured": "With a declared sensor partially obscured / at worst declared lighting, the robot enters its declared safe state.",
"rungs": [
{
"points": 8,
"state": "safe state in all declared degraded conditions"
},
{
"points": 6,
"state": "pack-evidenced (documents), not demonstrated"
},
{
"points": 4,
"state": "in some"
},
{
"points": 0,
"state": "not established or unsafe"
}
],
"ceiling": {
"unverified": 4,
"verified": 6,
"certified": 8
},
"company_wide": null,
"evidence_bar": "Degraded conditions declared in the envelope.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.6",
"id": "IND-6",
"name": "Restart and interlock discipline",
"points_max": 6,
"what_is_measured": "No resumption after protective/e-stop without the declared deliberate reset; no start with a zone/guard violated; reset requires the declared authority.",
"rungs": [
{
"points": 6,
"state": "all three witnessed, or all three documented in the public/pack safety documentation (F3)"
},
{
"points": 3,
"state": "partial"
},
{
"points": 0,
"state": "resumes automatically. Applies to all classes"
}
],
"ceiling": {
"unverified": 6,
"verified": 6,
"certified": 6
},
"company_wide": null,
"evidence_bar": "Reset behaviour documented.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.7",
"id": "IND-7",
"name": "Industrial duty-cycle throughput",
"points_max": 10,
"what_is_measured": "Declared cycle time / throughput honoured under representative multi-cycle work.",
"rungs": [
{
"points": 10,
"state": "witnessed at declared throughput (`r` = 1.0)"
},
{
"points": 8,
"state": "throughput measured by a third party or by the manufacturer's test evidence within tolerance, not witnessed"
},
{
"points": 6,
"state": "`r` = 0.6"
},
{
"points": 3,
"state": "`r` = 0.3"
},
{
"points": 0,
"state": "`r` = 0 or no measurement"
}
],
"ceiling": {
"unverified": 8,
"verified": 8,
"certified": 10
},
"company_wide": null,
"evidence_bar": "A throughput or cycle-time claim exists.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.8",
"id": "IND-8",
"name": "Fault recovery and repair in industrial duty",
"points_max": 8,
"what_is_measured": "Operator-level fault recovery and field-replaceable repairs achievable within declared times using the manual.",
"rungs": [
{
"points": 8,
"state": "recovery + a module swap within declared times"
},
{
"points": 6,
"state": "evidenced by documents alone (public or pack), not demonstrated"
},
{
"points": 5,
"state": "recovery only"
},
{
"points": 2,
"state": "documented only"
},
{
"points": 0,
"state": "not documented"
}
],
"ceiling": {
"unverified": 6,
"verified": 6,
"certified": 8
},
"company_wide": {
"text": "Repair record: model-specific 5 / company-wide 4 (Verified)",
"ceiling": null
},
"evidence_bar": "Service manual exists.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.9",
"id": "IND-9",
"name": "Fleet network exposure controls",
"points_max": 8,
"what_is_measured": "Robot operates in a segmented/offline industrial network; updates are signed and operator-controlled; remote access is off by default and auditable.",
"rungs": [
{
"points": 8,
"state": "all established live"
},
{
"points": 7,
"state": "documented in detail and covered by a public third-party security certificate/audit"
},
{
"points": 5,
"state": "two established"
},
{
"points": 4,
"state": "documented in detail (offline mode, signing, access model, ports) (F3)"
},
{
"points": 2,
"state": "documented only"
},
{
"points": 0,
"state": "none"
}
],
"ceiling": {
"unverified": 7,
"verified": 7,
"certified": 8
},
"company_wide": null,
"evidence_bar": "Update and access model documented. Applies to all classes.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
},
{
"clause": "6.10",
"id": "IND-10",
"name": "Industrial-context field record",
"points_max": 8,
"what_is_measured": "Incident and availability record in industrial deployments over the manufacturer's declared window.",
"rungs": [
{
"points": 8,
"state": "no unremediated major incident and availability ≥ declared"
},
{
"points": 6,
"state": "publicly evidenced only (no pack, no demonstration)"
},
{
"points": 5,
"state": "incidents all remediated, availability near declared"
},
{
"points": 3,
"state": "public regulator/recall databases searched with recorded coverage, none found (null-result rung, F2)"
},
{
"points": 2,
"state": "unremediated minor incidents or availability materially below"
},
{
"points": 0,
"state": "unremediated major incident. Regime rule (F19): full Unverified ceiling where a public reporting regime covers the class"
}
],
"ceiling": {
"unverified": 6,
"verified": 8,
"certified": 8
},
"company_wide": {
"text": "Company-wide register + availability: **ceiling 6**",
"ceiling": null
},
"evidence_bar": "Fleet exposure figures declared (model or company), or a null-result search recorded. Applies to all classes.",
"applicability": "mobile · manipulator · legged-other (VRS-IND-201 §7 class table)",
"not_applicable_by_class": false
}
],
"pool": {
"sector_only": {
"points": 100,
"ceiling_unverified": 70,
"ceiling_verified": 85,
"ceiling_certified": 100,
"best_letter": {
"unverified": "A",
"verified": "AA",
"certified": "AAA"
}
},
"with_contributors": "contributor ceilings are those of the cited IR standards; the combined pool sums are verified by the conformance gate (check 14)"
},
"rules": {
"no_evidence": "0 points (VRS-GEN-005 §6, R3.3); the criterion stays in the pool at full range",
"not_applicable": "criterion removed from numerator and denominator for that class (VRS-GEN-006 §6)",
"tier_rule": "AR tier ≤ IR tier (VRS-GEN-006 §7)"
}
}
5 Field dictionary
| Field | Meaning |
|---|---|
sector_criteria[].clause |
VRS-IND-201 subclause (6.k) — the “Required by” reference used in derived packs and protocols |
sector_criteria[].points_max |
Upper end of the criterion’s integer range |
sector_criteria[].rungs[] |
Every verifiable state and its points, highest first; the 0 state is implicit where not listed |
sector_criteria[].ceiling |
Maximum points at each tier; always equal to a rung value (VRS-GEN-002 §7.5.1) |
sector_criteria[].company_wide |
Field-record criteria only: the reduced ceiling when company-wide data substitutes for model data |
sector_criteria[].applicability / not_applicable_by_class |
Application classes the criterion applies to; excluded criteria leave the pool for that class |
contributing_ir_criteria[] |
Intrinsic criteria counted in the sector pool, with the standard and clause that score them |
pool.sector_only |
Sums over the sector criteria and the best attainable letter at each tier (A / AA / AAA by construction) |
bands_percent |
Letter thresholds as a percentage of the applicable pool (VRS-GEN-006 §4) |
6 Verification
Regenerate with python3 tools/vrs-twin-generate.py --sector ind --check; a non-zero exit means the
committed twin no longer matches VRS-IND-201 and shall be regenerated before publication.
Bibliography
- VRS-IND-201, Industrial — AR Assessment Protocol, v1.0.0, 2026 — the source of every number in Clause 4.
- VRS-IND-001, IND Sector Standard, 2026 — sector scope, hazard taxonomy and application classes.
- VRS-GEN-005, Intrinsic Rating — Methodology, 2026 — point aggregation and tier ceilings for the contributing IR criteria.
- VRS-GEN-006, Application Rating Scheme, 2026 — letter bands and pool mechanics reproduced in
bands_percentandpool. - VRS-GEN-002, Designation and Drafting Rules, 2026 — §6.5 criterion layout and §7.5.1 (ceilings equal rungs) that this twin verifies.
- VRS-GEN-004, Change, Edition and Review Policy, 2026 — how a twin regeneration is designated.
- VRS-GEN-009, Robot Risk Passport and Registry — Data Schema, 2026 — consumer of the payload.
- ISO/IEC 21778:2017, Information technology — The JSON data interchange syntax.
Change history
| Version | Date | Change |
|---|---|---|
| 1.0.0 (draft) | 2026-09-16 | VRS 2026 (draft) rewrite: regenerated from VRS-IND-201 Clause 5–7 (criteria, rungs, tier ceilings, contributors, bands, classes). Weights, modifiers, confidence and stage-prior fields removed. |