@company-semantics/contracts 60.0.0 → 61.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@company-semantics/contracts",
3
- "version": "60.0.0",
3
+ "version": "61.0.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -71,7 +71,29 @@ export type DecisionEffect =
71
71
  * derivation to run again. Carries the reason so the follow-up has something
72
72
  * to act on, and so the reviewer is not told "saved" when nothing moved.
73
73
  */
74
- | { readonly kind: "needs_reinference"; readonly note: string };
74
+ | { readonly kind: "needs_reinference"; readonly note: string }
75
+ /**
76
+ * Mark a person as the head of a DURABLE unit, and optionally set that unit's
77
+ * owner label. Today the only producer names the org root, so accepting is how
78
+ * an imported chart's CEO becomes the workspace's root owner.
79
+ *
80
+ * DURABLE addressing, not a temp id: post-apply every unit is durable, so a
81
+ * real id is the general form. A temp id would serve only corrections to
82
+ * not-yet-created units, which a proposal's own `headPersonId` already covers
83
+ * with no effect at all.
84
+ *
85
+ * THIS EFFECT NEVER MINTS AUTHORITY. It writes a presentation/semantic marker
86
+ * and a label. Granting unit or account ownership stays with the human-gated
87
+ * ownership route — a root-unit owner IS an account owner, so an automated
88
+ * grant would be a privilege-escalation path.
89
+ */
90
+ | {
91
+ readonly kind: "set_unit_head";
92
+ readonly unitId: string;
93
+ readonly personId: string;
94
+ /** Non-null also sets the unit's owner label; null marks the head only. */
95
+ readonly title: string | null;
96
+ };
75
97
 
76
98
  /** The closed set of effect kinds, as runtime data for validators. */
77
99
  export const DECISION_EFFECT_KINDS = [
@@ -81,6 +103,7 @@ export const DECISION_EFFECT_KINDS = [
81
103
  "unadopt_unit",
82
104
  "archive_unit",
83
105
  "needs_reinference",
106
+ "set_unit_head",
84
107
  ] as const satisfies ReadonlyArray<DecisionEffect["kind"]>;
85
108
 
86
109
  /** One answer a human may give, with what it means and what it does. */