Add msg to v1 push_status, and say why v2 has no vt_tray
Two things the live captures showed that the schemas did not say. `msg` was missing from the v1 push_status schema, which is the one version where it is load-bearing. v1 pushes only the fields that changed, except for a pushall-triggered push which is the whole object, and `msg` is how a v1 message self-describes which it is (0 forced/full, 1 automatic/partial). A consumer that replaces its cached object with a partial push silently unsets every field that push did not mention, and there is no other way to tell: push_status does not echo `sequence_id`, so there is no correlation back to the pushall that asked for it. continuum-proxy has read this field since the cache was written; the schema just never declared it. v2 had it with no description. It is informational there - v2 sends the whole object every time - so it now points at the v1 note rather than repeating it. The other half is an absence, which a schema cannot express by staying silent: v2 has no `vt_tray` because a real v2 printer omits the key entirely rather than sending an empty object. That is recorded as a comment so nobody adds it for symmetry with v1, because the distinction is the thing: absence means "not reported", not "no external spool", and it is exactly why `EXTERNAL_SPOOLS` in continuum-proxy is a constant instead of being counted from a report.
This commit is contained in:
@@ -10,6 +10,8 @@
|
||||
"properties": {
|
||||
"command": { "const": "push_status" },
|
||||
|
||||
"_comment_no_vt_tray": "There is deliberately no vt_tray here. A real v2 printer omits the key entirely rather than sending an empty object, confirmed live, so absence means 'not reported' and not 'no external spool' - do not add it to make this symmetrical with v1. It is why the external-spool count cannot be derived from a report: counting reported spools would give 0 on exactly the dual-nozzle H2C that has two (see common/ams/ams_mapping.schema.json).",
|
||||
|
||||
"2D": { "$ref": "./_2d_report.schema.json" },
|
||||
"3D": { "$ref": "./_3d_report.schema.json" },
|
||||
"ams": { "$ref": "../../common/ams/ams.schema.json" },
|
||||
@@ -85,7 +87,10 @@
|
||||
"mc_stage": { "type": "integer" },
|
||||
|
||||
"model_id": { "type": "string" },
|
||||
"msg": { "type": "integer" },
|
||||
"msg": {
|
||||
"type": "integer",
|
||||
"description": "Full-vs-partial indicator, as in v1 (0 forced/full, 1 automatic/partial) - but informational here, because v2 sends the entire object on every push. The v1 schema carries the full note on why a v1 consumer must read it."
|
||||
},
|
||||
|
||||
"percent": { "type": "integer" },
|
||||
"plate_cnt": { "type": "integer" },
|
||||
|
||||
Reference in New Issue
Block a user