patchwork-os 1.2.0-beta.2.canary.767 → 1.2.0-beta.2.canary.769

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.
@@ -93,6 +93,30 @@ export interface BoundaryOutcome {
93
93
  * Rule 1 runs FIRST and is not reachable past. A destination cannot become
94
94
  * cleared by redacting a category, because the classification is a property of
95
95
  * the step as a whole — dropping a tag does not declassify what remains.
96
+ *
97
+ * ## The LOCAL_ONLY / REQUIRE_APPROVAL ordering inside rule 1
98
+ *
99
+ * The `LOCAL_ONLY` branch is tested BEFORE `approvable`, so on a registry with
100
+ * a permissive local destination — the shape the docs recommend — an
101
+ * `approvable: true` remote destination is never asked about for any
102
+ * classification it refuses. The operator set a control expecting to be asked
103
+ * and is REFUSED instead, because `LOCAL_ONLY` declines rather than rerouting.
104
+ *
105
+ * This is NOT the same as "REQUIRE_APPROVAL is unreachable", which is the
106
+ * stronger claim that has been written down elsewhere and is wrong: it fires
107
+ * whenever no local destination accepts the classification. Pinned in
108
+ * `__tests__/approvableIsInert.test.ts`, in both directions.
109
+ *
110
+ * Deliberately NOT reordered here. Note that `narrowest()` below ranks
111
+ * `REQUIRE_APPROVAL` (3) as stricter than `LOCAL_ONLY` (2), so rule 1 returns
112
+ * the LESS restrictive of its two candidates — which looks like a defect and
113
+ * may not be one. In EFFECT today `LOCAL_ONLY` is the stricter of the two,
114
+ * because it refuses outright and no approval unlocks it, while
115
+ * `REQUIRE_APPROVAL` can be unlocked by a human. The ranking describes intent,
116
+ * the runtime describes behaviour, and they disagree. Reordering would make
117
+ * live traffic newly approvable — an enforcement change, not a tidy-up — so it
118
+ * needs a decision, not a patch. `patchwork privacy destinations` reports the
119
+ * dead flag in the meantime.
96
120
  */
97
121
  export declare function decideBoundary(policy: DataPolicy, destination: Destination, opts?: {
98
122
  localDestinationAccepts?: boolean;
@@ -59,6 +59,30 @@ export function classificationRank(c) {
59
59
  * Rule 1 runs FIRST and is not reachable past. A destination cannot become
60
60
  * cleared by redacting a category, because the classification is a property of
61
61
  * the step as a whole — dropping a tag does not declassify what remains.
62
+ *
63
+ * ## The LOCAL_ONLY / REQUIRE_APPROVAL ordering inside rule 1
64
+ *
65
+ * The `LOCAL_ONLY` branch is tested BEFORE `approvable`, so on a registry with
66
+ * a permissive local destination — the shape the docs recommend — an
67
+ * `approvable: true` remote destination is never asked about for any
68
+ * classification it refuses. The operator set a control expecting to be asked
69
+ * and is REFUSED instead, because `LOCAL_ONLY` declines rather than rerouting.
70
+ *
71
+ * This is NOT the same as "REQUIRE_APPROVAL is unreachable", which is the
72
+ * stronger claim that has been written down elsewhere and is wrong: it fires
73
+ * whenever no local destination accepts the classification. Pinned in
74
+ * `__tests__/approvableIsInert.test.ts`, in both directions.
75
+ *
76
+ * Deliberately NOT reordered here. Note that `narrowest()` below ranks
77
+ * `REQUIRE_APPROVAL` (3) as stricter than `LOCAL_ONLY` (2), so rule 1 returns
78
+ * the LESS restrictive of its two candidates — which looks like a defect and
79
+ * may not be one. In EFFECT today `LOCAL_ONLY` is the stricter of the two,
80
+ * because it refuses outright and no approval unlocks it, while
81
+ * `REQUIRE_APPROVAL` can be unlocked by a human. The ranking describes intent,
82
+ * the runtime describes behaviour, and they disagree. Reordering would make
83
+ * live traffic newly approvable — an enforcement change, not a tidy-up — so it
84
+ * needs a decision, not a patch. `patchwork privacy destinations` reports the
85
+ * dead flag in the meantime.
62
86
  */
63
87
  export function decideBoundary(policy, destination, opts = {}) {
64
88
  const cleared = destination.classifications.includes(policy.classification);
@@ -1 +1 @@
1
- {"version":3,"file":"dataPolicy.js","sourceRoot":"","sources":["../../src/privacy/dataPolicy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataPolicy.js","sourceRoot":"","sources":["../../src/privacy/dataPolicy.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,27 @@ export interface DescribedDestination {
49
49
  * the one that sends data an operator may not expect to leave the machine.
50
50
  */
51
51
  sendsSensitiveOffMachine: boolean;
52
+ /** The operator set `approvable: true` on this destination. */
53
+ approvable: boolean;
54
+ /**
55
+ * True when `approvable` is set and can NEVER fire.
56
+ *
57
+ * `decideBoundary` rule 1 short-circuits to `LOCAL_ONLY` before it tests
58
+ * `approvable`, whenever some registered LOCAL destination is cleared for the
59
+ * classification in question. So on a registry with a permissive local
60
+ * destination — the shape the docs recommend — an `approvable` remote
61
+ * destination is never asked about for ANY classification it refuses.
62
+ *
63
+ * Reported rather than fixed. The operator set a control expecting to be
64
+ * asked, and is refused instead, because `LOCAL_ONLY` declines rather than
65
+ * rerouting. A knob that silently does nothing is worse than an absent one:
66
+ * it reads as a control that is in place.
67
+ *
68
+ * Computed with the SAME predicate the runtime uses (`some local destination
69
+ * is cleared for this classification`), not a re-derivation — two notions of
70
+ * reachability would drift, and the drift would be silent and reassuring.
71
+ */
72
+ approvalUnreachable: boolean;
52
73
  note?: string;
53
74
  noteReviewedOn?: string;
54
75
  /** True when a note exists but carries no reviewed date, or an unparseable one. */
@@ -41,12 +41,20 @@ export function describeDestinations(destinations, driversFor, opts = {}) {
41
41
  const sensitive = cleared.some((c) => classificationRank(c) >= classificationRank(SENSITIVE_FLOOR));
42
42
  const dated = note?.noteReviewedOn !== undefined &&
43
43
  !Number.isNaN(Date.parse(note.noteReviewedOn));
44
+ // Every classification this destination would REFUSE. If a local
45
+ // destination accepts all of them, rule 1 short-circuits every time and the
46
+ // `approvable` flag is dead.
47
+ const refused = ALL_CLASSIFICATIONS.filter((c) => !d.classifications.includes(c));
48
+ const localAcceptsAllRefused = refused.length > 0 &&
49
+ refused.every((c) => destinations.some((x) => x.type === "local" && x.classifications.includes(c)));
44
50
  out.push({
45
51
  id: d.id,
46
52
  type: d.type,
47
53
  cleared,
48
54
  drivers: driversFor.get(d.id) ?? [],
49
55
  sendsSensitiveOffMachine: d.type === "remote" && sensitive,
56
+ approvable: d.approvable === true,
57
+ approvalUnreachable: d.approvable === true && d.type === "remote" && localAcceptsAllRefused,
50
58
  ...(note?.note !== undefined && { note: note.note }),
51
59
  ...(note?.noteReviewedOn !== undefined && {
52
60
  noteReviewedOn: note.noteReviewedOn,
@@ -106,6 +114,17 @@ export function formatDestinationsReport(described, opts = {}) {
106
114
  L.push(` own choice, and the one that sends personal data to a`);
107
115
  L.push(` third party's servers.`);
108
116
  }
117
+ if (d.approvalUnreachable) {
118
+ // Louder than a note, because the operator believes a control is in
119
+ // place. Says what will happen INSTEAD — being refused is not what
120
+ // "approvable" led them to expect, and `LOCAL_ONLY` declines rather than
121
+ // rerouting, so nothing asks and nothing reaches the local destination
122
+ // either.
123
+ L.push(` ⚠ "approvable" is set here and can NEVER fire: a local`);
124
+ L.push(` destination accepts every classification this one refuses,`);
125
+ L.push(` so the decision short-circuits to LOCAL_ONLY first. You will`);
126
+ L.push(` be REFUSED, not asked.`);
127
+ }
109
128
  if (d.note !== undefined) {
110
129
  L.push(` note: ${d.note}`);
111
130
  if (noteIsStale(d, opts)) {
@@ -1 +1 @@
1
- {"version":3,"file":"describeDestinations.js","sourceRoot":"","sources":["../../src/privacy/describeDestinations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EACL,eAAe,EAEf,kBAAkB,GAEnB,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,MAAM,eAAe,GAAmB,UAAU,CAAC;AAoCnD,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAM,UAAU,oBAAoB,CAClC,YAA2B,EAC3B,UAAiC,EACjC,OAAwB,EAAE;IAE1B,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CACxD,CAAC;QACF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,eAAe,CAAC,CACpE,CAAC;QACF,MAAM,KAAK,GACT,IAAI,EAAE,cAAc,KAAK,SAAS;YAClC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO;YACP,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACnC,wBAAwB,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS;YAC1D,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,SAAS,IAAI;gBACxC,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;YACF,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK;SAChD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,WAAW,CACzB,CAAuB,EACvB,OAAwB,EAAE;IAE1B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;IACpC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,kBAAkB,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,CAAuB;IACnD,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO;QACvB,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,4CAA4C,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAAiC,EACjC,OAAwB,EAAE;IAE1B,MAAM,CAAC,GAAa,EAAE,CAAC;IACvB,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,uEAAuE;QACvE,wEAAwE;QACxE,4BAA4B;QAC5B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAC1E,CAAC,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAC5E,CAAC,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;YAC/B,CAAC,CAAC,IAAI,CACJ,kEAAkE,CACnE,CAAC;YACF,CAAC,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;YACxE,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChC,IAAI,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBACzB,CAAC,CAAC,IAAI,CACJ,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW;oBAC7C,CAAC,CAAC,yEAAyE;oBAC3E,CAAC,CAAC,sCAAsC,CAAC,CAAC,cAAc,0BAA0B,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,CAAC;IACD,CAAC,CAAC,IAAI,CACJ,wEAAwE,CACzE,CAAC;IACF,CAAC,CAAC,IAAI,CACJ,sEAAsE,CACvE,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,IAAI,CACJ,uEAAuE,CACxE,CAAC;QACF,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"describeDestinations.js","sourceRoot":"","sources":["../../src/privacy/describeDestinations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchwork-os",
3
- "version": "1.2.0-beta.2.canary.767",
3
+ "version": "1.2.0-beta.2.canary.769",
4
4
  "description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -89,7 +89,7 @@ steps:
89
89
 
90
90
  {{brief}}
91
91
  - tool: slack.post_message
92
- channel: all-massappealdesigns
92
+ channel: your-channel-name
93
93
  text: |
94
94
  *Morning Brief — {{date}}*
95
95