ingestron 0.17.2 → 0.17.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.3
4
+
5
+ - Pin core 0.12.9. Contracts can carry ODCS quality rules; `check` and `build`
6
+ report how each target enforces them, and an error-severity rule the target
7
+ cannot enforce blocks the build unless `defaults.quality.unsupported: report`.
8
+ Primary keys imply not-null and unique rules, reported without blocking.
9
+
3
10
  ## 0.17.2
4
11
 
5
12
  - Pin core 0.12.8. `ingestron check` lists data products with status and owner
@@ -75,7 +75,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
75
75
  SOFTWARE.
76
76
  ```
77
77
 
78
- ### @ingestron/core@0.12.8
78
+ ### @ingestron/core@0.12.9
79
79
 
80
80
  Declared licence: Apache-2.0
81
81
 
@@ -28,9 +28,10 @@ export function exitCode(result) {
28
28
  }
29
29
  const clean = (value) => String(value).replace(/[\u0000-\u001f\u007f-\u009f]/g, " ");
30
30
  // Data product ownership from ODCS contracts; absent with older core versions.
31
- function dataProductLines(products) {
31
+ function dataProductLines(products, quality) {
32
32
  if (!Array.isArray(products) || !products.length)
33
33
  return "";
34
+ const summary = quality?.summary;
34
35
  const shown = products.slice(0, 20).map((p) => {
35
36
  const owners = Array.isArray(p.owners) ? p.owners.map(clean) : [];
36
37
  return `\n ${clean(p.contract)} ${clean(p.status ?? "no status")} ${owners.length ? `owner ${owners.join(", ")}` : "no owner"}`;
@@ -39,9 +40,11 @@ function dataProductLines(products) {
39
40
  return ("\nData products:" +
40
41
  shown.join("") +
41
42
  (products.length > 20 ? `\n … ${products.length - 20} more` : "") +
42
- (recorded
43
- ? `\n${recorded} quality rule(s) are recorded in contracts but not yet enforced.`
44
- : ""));
43
+ (summary && summary.rules
44
+ ? `\nQuality rules: ${summary.rules} (${summary.atLoad} at load, ${summary.afterLoad} after load, ${summary.unsupported} not enforced by the target${summary.documentation ? `, ${summary.documentation} documentation only` : ""}).`
45
+ : !summary && recorded
46
+ ? `\n${recorded} quality rule(s) are recorded in contracts but not yet enforced.`
47
+ : ""));
45
48
  }
46
49
  function pluginLabel(reference) {
47
50
  for (const [name, entry] of Object.entries(officialPlugins)) {
@@ -122,7 +125,7 @@ export function terminal(result, verbose = false, args = {}) {
122
125
  return value.mode === "draft"
123
126
  ? `Draft configuration checked (${value.flows} flows).\n${value.pending.length} unresolved inputs. Strict build readiness has not been checked.`
124
127
  : `Project checks passed${value.nodes === undefined ? "" : ` (${value.nodes} planned nodes)`}.\nValidation is local; no platform connection was tested.` +
125
- dataProductLines(value.dataProducts);
128
+ dataProductLines(value.dataProducts, value.quality);
126
129
  case "doctor":
127
130
  return `Project ${clean(value.project)} (${clean(value.environment)})\n${value.pending.length} unresolved inputs.\n${clean(value.platformAccess)}\nNext: ${clean(value.next)}`;
128
131
  case "runtime_prepare":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ingestron",
3
- "version": "0.17.2",
3
+ "version": "0.17.3",
4
4
  "type": "module",
5
5
  "description": "Build repeatable data pipelines from reviewed contracts and versioned standards.",
6
6
  "license": "Apache-2.0",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@clack/prompts": "1.7.0",
27
- "@ingestron/core": "0.12.8",
27
+ "@ingestron/core": "0.12.9",
28
28
  "@modelcontextprotocol/sdk": "1.30.0",
29
29
  "commander": "15.0.0",
30
30
  "yaml": "2.9.0"