@octaviaflow/flow-rules 0.8.1 → 0.9.0

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/dist/index.cjs CHANGED
@@ -5046,7 +5046,6 @@ function validateStepConfig(step) {
5046
5046
  if (!definition)
5047
5047
  return issues;
5048
5048
  const declared = new Map(contractFieldsFor(definition).map((f) => [f.key, f]));
5049
- const derived = contractDerivedKeys(definition);
5050
5049
  const entries = Object.entries(config);
5051
5050
  for (const [key, value] of entries) {
5052
5051
  const field = declared.get(key);
@@ -5062,7 +5061,7 @@ function validateStepConfig(step) {
5062
5061
  }
5063
5062
  if (!typeMatches(field, value)) {
5064
5063
  issues.push({
5065
- severity: derived.has(key) ? "warning" : "error",
5064
+ severity: "error",
5066
5065
  code: "FIELD_WRONG_TYPE",
5067
5066
  stepId,
5068
5067
  field: key,
package/dist/index.js CHANGED
@@ -4932,7 +4932,6 @@ function validateStepConfig(step) {
4932
4932
  if (!definition)
4933
4933
  return issues;
4934
4934
  const declared = new Map(contractFieldsFor(definition).map((f) => [f.key, f]));
4935
- const derived = contractDerivedKeys(definition);
4936
4935
  const entries = Object.entries(config);
4937
4936
  for (const [key, value] of entries) {
4938
4937
  const field = declared.get(key);
@@ -4948,7 +4947,7 @@ function validateStepConfig(step) {
4948
4947
  }
4949
4948
  if (!typeMatches(field, value)) {
4950
4949
  issues.push({
4951
- severity: derived.has(key) ? "warning" : "error",
4950
+ severity: "error",
4952
4951
  code: "FIELD_WRONG_TYPE",
4953
4952
  stepId,
4954
4953
  field: key,
@@ -93,12 +93,13 @@ export declare function contractVocabularyDrift(actionId: string): string[];
93
93
  /**
94
94
  * Keys `contractFieldsFor` ADDED — declared by config.ts but not by inputSchema.
95
95
  *
96
- * The fence treats a type mismatch on one of these as a WARNING, not an error,
97
- * until it has been measured against real flows. The reason is concrete: the
98
- * moment http_request's contract declared `queryParams: array`, a fixture that
99
- * stored it as an object stopped saving. On beta 71 of 131 real config keys
100
- * were undeclared, so any of them may be stored in a shape the contract does
101
- * not expect — and refusing the save would leave whoever opens that flow
102
- * unable to save it. inputSchema-declared keys keep their existing error.
96
+ * In 0.8.1 the fence treated a type mismatch on one of these as a WARNING,
97
+ * pending a measurement: the moment http_request's contract declared
98
+ * `queryParams: array`, a fixture storing it as an object stopped saving, and
99
+ * with 71 of 131 real keys previously undeclared any might have been stored in
100
+ * an unexpected shape. Measured 2026-09-26 against every flow on beta — 79
101
+ * flows, 302 steps — zero mismatches. 0.9.0 promotes them to errors, the same
102
+ * as any other declared key. This helper remains for tooling that wants to
103
+ * know which keys the contract added.
103
104
  */
104
105
  export declare function contractDerivedKeys(definition: ActionDefinition): Set<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@octaviaflow/flow-rules",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "The flow action catalog and the rules engine behind Flow Doctor \u2014 one definition of what a step accepts and what makes a flow valid, shared by the editor and the server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",