@zhuoyuezs/ml-platform 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/checksums.json CHANGED
@@ -37,8 +37,8 @@
37
37
  },
38
38
  {
39
39
  "path": "skills/feature-management/SKILL.md",
40
- "sha256": "sha256:50646fd4c5884fe25b9488f223b680ad44417b96da160950b454202ea756e7f8",
41
- "size_bytes": 30846
40
+ "sha256": "sha256:5b3ce57d84f11188579227dd42617075f87534ac113a3f37b3543c85c0ff0b3d",
41
+ "size_bytes": 31114
42
42
  },
43
43
  {
44
44
  "path": "skills/feature-management/agents/openai.yaml",
@@ -97,8 +97,8 @@
97
97
  },
98
98
  {
99
99
  "path": "skills/feature-management/references/contracts.md",
100
- "sha256": "sha256:b705dec6e801f95d0d354a0d0f0d6fb5bd139d5f9938f78d70f1fe108b7c95b9",
101
- "size_bytes": 27741
100
+ "sha256": "sha256:d9ff95edb3ac50cb590df640c5034d45ddd5b758431a4ae2e69eb807bb659314",
101
+ "size_bytes": 28449
102
102
  },
103
103
  {
104
104
  "path": "skills/feature-management/references/operator-authoring.md",
@@ -137,18 +137,18 @@
137
137
  },
138
138
  {
139
139
  "path": "skills/model-lifecycle-management/references/packaging.md",
140
- "sha256": "sha256:fd87f0ea6f79bff0498ff1688ab782340d572815872c86520032549910160028",
141
- "size_bytes": 2858
140
+ "sha256": "sha256:8435283061d740e57aafc90fa402cd89adcd8e2e957805b3d435ea4ba1f8721c",
141
+ "size_bytes": 3142
142
142
  },
143
143
  {
144
144
  "path": "skills/model-lifecycle-management/references/training-contracts.md",
145
- "sha256": "sha256:e93f5361f5f7cfaef53ba65b2606e58b06585d7de6c966706c66995e844b4804",
146
- "size_bytes": 6909
145
+ "sha256": "sha256:1d1fa51ef7deb6abf178cf019eb69e8ee6a93ecb018029780f01a33696473dd6",
146
+ "size_bytes": 8229
147
147
  },
148
148
  {
149
149
  "path": "skills/model-lifecycle-management/references/training.md",
150
- "sha256": "sha256:10a6694f1904ce210f062221273a0687574354764bafb573318a5f7fcb425e55",
151
- "size_bytes": 4206
150
+ "sha256": "sha256:370d5e663292ce1bdcf0eb88c133c07a77f57dd31e21748906c92aa3407c4e95",
151
+ "size_bytes": 4516
152
152
  }
153
153
  ],
154
154
  "schema_version": "data_platform.ml_platform_checksums/v1"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhuoyuezs/ml-platform",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "ML 数据平台 business CLI 与 Agent Skills 管理工具",
5
5
  "bin": {
6
6
  "ml-platform": "scripts/main.js"
package/release.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "ml_data_platform.feature_set/v1",
26
26
  "ml_data_platform.dataset_manifest/v1"
27
27
  ],
28
- "release_version": "0.1.8",
28
+ "release_version": "0.1.9",
29
29
  "runtime_requirements": {
30
30
  "node": ">=18",
31
31
  "os": [
@@ -38,15 +38,15 @@
38
38
  "feature-management": {
39
39
  "path": "skills/feature-management",
40
40
  "requires_cli": ">=0.7.0 <0.8.0",
41
- "revision": "0.1.8",
42
- "sha256": "sha256:38ec81d73353bf8eb39ae56074c15cc0fcae14701e8aba1462b5cbd155a1fa65"
41
+ "revision": "0.1.9",
42
+ "sha256": "sha256:82a49a3f636d4e1a4b5adf28cbcab533168e3aa5fc3014f096149055e7745624"
43
43
  },
44
44
  "model-lifecycle-management": {
45
45
  "path": "skills/model-lifecycle-management",
46
46
  "requires_cli": ">=0.7.0 <0.8.0",
47
- "revision": "0.1.8",
48
- "sha256": "sha256:e3eefccb76748847975024cc6fc124df1a581d286d8de165195bd708f5dfa00f"
47
+ "revision": "0.1.9",
48
+ "sha256": "sha256:b84505ee632967d019e97f89292c0041f8b722bd320e7d68d170e41131edaff7"
49
49
  }
50
50
  },
51
- "source_commit": "07afde3b78bcf2fcee220a136f226c0ccdf96e38"
51
+ "source_commit": "5f855cd27f7951b739424704ea7dc15d714aeb5d"
52
52
  }
@@ -107,7 +107,8 @@ Confirm:
107
107
 
108
108
  - the target project (namespace) for the assets; use the built-in `default` only when the user has no dedicated project. After the target is confirmed, write its explicit `project` field in every Parameter, Operator, Feature, FeatureSet and DatasetManifest draft; never rely on the schema default. Reads and filters use the `--project` command option;
109
109
  - business meaning, stable asset names, owner, and intended consumers;
110
- - Parameter source adapter and credential-free source mapping;
110
+ - Parameter source adapter (`postgresql_direct`, `mysql_direct`,
111
+ `sqlserver_direct`, or `influxdb_direct`) and credential-free source mapping;
111
112
  - feature formula, exact Parameter dependencies, windows, inclusion rules, rounding, null behavior, and output dtype;
112
113
  - whether an approved Operator already implements the formula;
113
114
  - FeatureSet column order;
@@ -255,7 +256,7 @@ unit, time/availability semantics and missing policy in the semantic review.
255
256
  Never infer a source table, column, measurement, tag, unit or timezone from a
256
257
  Parameter name.
257
258
 
258
- Create one stable, versioned source contract for each independently readable value. Keep credentials out of JSON. Use only supported direct adapters and explicit source identity. Put source data validity in `quality_rules`; put dataset-specific transformations in preprocess Operators.
259
+ Create one stable, versioned source contract for each independently readable value. Keep credentials out of JSON. Use only supported direct adapters (`postgresql_direct`, `mysql_direct`, `sqlserver_direct`, and `influxdb_direct`) and explicit source identity. The server supplies database DSNs from managed Secrets; never add them to CLI arguments or Catalog JSON. Put source data validity in `quality_rules`; put dataset-specific transformations in preprocess Operators.
259
260
 
260
261
  When the approved source contract supplies SQL, copy its query text and named
261
262
  parameters exactly into `source.sql`/`source.params`. Do not retype, beautify,
@@ -127,7 +127,9 @@ tie with a different rule cannot be repaired downstream. Do not repeat the same
127
127
  Parameter-level rounding in an Operator. Changing the mode, decimals, or stage
128
128
  requires a new Parameter version and the affected reverse-dependency closure.
129
129
 
130
- PostgreSQL direct-column example:
130
+ PostgreSQL, MySQL, and SQL Server direct-column Parameters share this source
131
+ shape. Set `adapter` to `postgresql_direct`, `mysql_direct`, or
132
+ `sqlserver_direct`; keep database-specific DSNs in server-managed Secrets.
131
133
 
132
134
  ```json
133
135
  {
@@ -143,6 +145,16 @@ PostgreSQL direct-column example:
143
145
  }
144
146
  ```
145
147
 
148
+ The same contract for MySQL or SQL Server changes only the adapter name:
149
+
150
+ ```json
151
+ {"adapter": "mysql_direct", "mode": "direct_column", "schema": "process_data", "table": "sensor_readings", "time_column": "event_time", "value_column": "hot_blast_pressure", "metric_name": "hot_blast_pressure"}
152
+ ```
153
+
154
+ ```json
155
+ {"adapter": "sqlserver_direct", "mode": "direct_column", "schema": "process_data", "table": "sensor_readings", "time_column": "event_time", "value_column": "hot_blast_pressure", "metric_name": "hot_blast_pressure"}
156
+ ```
157
+
146
158
  InfluxDB direct-column example:
147
159
 
148
160
  ```json
@@ -44,6 +44,11 @@ Confirm the ModelArtifact, signature, runtime, immutable base/builder/worker ima
44
44
 
45
45
  A deliverable package is `READY` and includes its remote image digest, immutable reference, manifest, signature and adapter hashes, runtime capabilities, and a passing test report for the same digest. Other states are not deliverable.
46
46
 
47
+ For a sequence-output artifact, inspect the returned runtime contract for
48
+ `output_schema.kind=sequence`, its fixed maximum `length` and frequency, and
49
+ `horizon_prediction=prefix`. Inference returns the requested aligned prefix up
50
+ to that maximum; a one-step artifact remains scalar.
51
+
47
52
  ```bash
48
53
  ml-platform --profile server cancel-model-package <package-id> --package-version <version>
49
54
  ```
@@ -11,7 +11,7 @@ Example forecasting sequence run:
11
11
 
12
12
  ```json
13
13
  {
14
- "schema_version": "ml_data_platform.training_run/v2",
14
+ "schema_version": "ml_data_platform.training_run/v3",
15
15
  "run_id": "pressure_forecast_run_01",
16
16
  "experiment": "pressure_forecast",
17
17
  "task": {"kind": "forecasting", "objective": "regression"},
@@ -38,6 +38,14 @@ Example forecasting sequence run:
38
38
  "context_end": "prediction_time_inclusive", "frequency": "5min",
39
39
  "stride": 1, "gap_policy": "reject", "padding_policy": "none"
40
40
  },
41
+ "forecast_target_adapter": {
42
+ "schema_version": "ml_data_platform.forecast_target_adapter/v1",
43
+ "kind": "continuous_target_series",
44
+ "target_input_column": "pressure",
45
+ "output_label_column": "future_pressure",
46
+ "target_gap_policy": "reject",
47
+ "point_output": {"statistic": "median", "step": "horizon"}
48
+ },
41
49
  "label_transform": {"name": "identity", "version": "v1"},
42
50
  "trainer": {
43
51
  "project": "default", "name": "replace_approved_trainer", "version": "v1",
@@ -128,6 +136,18 @@ null Features or labels also skip samples. Candidate row counts therefore are
128
136
  not training/evaluation sample counts. Report the materialized population and
129
137
  coverage instead of assuming all Parquet rows were used.
130
138
 
139
+ For `continuous_target_series`, TrainingRun v3 derives the fixed maximum
140
+ `prediction_length` as `data.temporal.horizon / data.temporal.frequency`; the
141
+ horizon must be a positive exact multiple of the frequency. The target input
142
+ must be a numeric, at-prediction Feature and the output label must be the sole
143
+ entry in `data.labels`. Use this adapter only when the inspected TrainerDefinition
144
+ advertises `forecast_target_modes=["continuous_target_series"]`.
145
+
146
+ The resulting model emits the complete fixed-length trajectory. Serving accepts
147
+ aligned horizons up to that maximum and returns the corresponding trajectory
148
+ prefix; it rejects unaligned or longer horizons. A one-step model remains a
149
+ scalar response.
150
+
131
151
  `gap_policy=fill` requires `padding_policy=edge` or `zero`; non-fill requires
132
152
  `padding_policy=none`. Filling changes model inputs and needs an intended
133
153
  business policy. `skip` and padding are not automatic fixes for rejected grids.
@@ -137,3 +157,8 @@ EvaluationConfig uses versioned names such as `regression.mae`. They are differe
137
157
  contracts. Training `evaluation.split=auto` prefers nonempty test, then validation,
138
158
  then train; choose an explicit split when reserving the test set for final review.
139
159
  Training metrics are not a governed EvaluationResult or release gate pass.
160
+
161
+ For sequence outputs, current training and governed evaluation apply regression
162
+ metrics to the terminal point at the trained maximum horizon. They do not yet
163
+ provide per-step or whole-trajectory release gates; record this limitation when
164
+ reporting evidence for a multi-point package.
@@ -7,7 +7,7 @@ FeatureSet order and evaluation runtime before the first Job. See
7
7
  [evaluation.md](evaluation.md) for inherited split bindings and runtime failures.
8
8
 
9
9
  - Inspect exact TrainerDefinition `project/name:v1`, entrypoint, image digest,
10
- capabilities and parameter schema. Similar names in different projects are
10
+ capabilities (including `forecast_target_modes`) and parameter schema. Similar names in different projects are
11
11
  distinct identities; registration does not imply runtime approval.
12
12
  - Match definition and device to the active runtime release. On `not approved
13
13
  for device`, preserve the rejected identity, device and release ID. Use `get-model-runtime-release` to find the
@@ -21,6 +21,10 @@ FeatureSet order and evaluation runtime before the first Job. See
21
21
  `label_time - prediction_time`, and validate the complete TrainingRun before
22
22
  registration/submission. Validation may not catch undeclared plugin limits or
23
23
  missing dependencies in the eventual Worker.
24
+ - For a continuous future trajectory, use TrainingRun v3 with
25
+ `forecast_target_adapter.kind=continuous_target_series`. Its fixed maximum
26
+ prediction length comes from temporal horizon divided by frequency; do not
27
+ put `prediction_length` in trainer-specific parameters.
24
28
 
25
29
  Merge this fragment under TrainingRun `data`, alongside `artifact`, `features`,
26
30
  `labels` and the applicable `temporal` binding: