@groundnuty/macf-core 0.2.35 → 0.2.37

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.
@@ -0,0 +1,196 @@
1
+ /**
2
+ * The 10 protected invariants, expressed in the structured-norm representation
3
+ * (groundnuty/macf#504, DR-026 G2 — PR-1).
4
+ *
5
+ * Source of truth for the prose: `design/protected-invariants.md` (ratified
6
+ * 2026-06-16). This module is the *machine-readable* projection of that set,
7
+ * the foundation G3's SECP invariant-validator (macf#505) consumes to check a
8
+ * proposed rule change against the constitutional core.
9
+ *
10
+ * --------------------------------------------------------------------------
11
+ * NORM-vs-STRUCTURAL TAXONOMY.
12
+ * --------------------------------------------------------------------------
13
+ * Not every invariant is a deontic norm. Forcing a property-invariant into a
14
+ * `(role, action, condition)` shape it doesn't fit produces a norm that lies
15
+ * about what it constrains — and the conflict-checker would then reason over a
16
+ * fiction. So each invariant is classified:
17
+ *
18
+ * - NORM-EXPRESSIBLE → a `Norm` (obligation/permission/prohibition bound to
19
+ * a role + a positive action + a condition).
20
+ * - STRUCTURAL PROPERTY → a `StructuralInvariant` (a property/meta-principle
21
+ * enforced by a mechanism — a hook, the
22
+ * result-invariant pattern — NOT by a deontic norm).
23
+ *
24
+ * The split (and the #4/#7 judgement calls) is documented in
25
+ * `design/structured-norms.md` and asserted by the tests.
26
+ *
27
+ * #1 reporter-owns-closure → NORM obligation
28
+ * #2 identity ↔ attribution → STRUCTURAL (a property of every action)
29
+ * #3 LGTM gate / no-self-merge → NORM prohibition
30
+ * #4 routing integrity → STRUCTURAL (a property of comments; the
31
+ * @mention is a transport precondition,
32
+ * not a role's deontic action — science
33
+ * leaned structural; concurred)
34
+ * #5 auto-close discipline → NORM prohibition
35
+ * #6 fail-loud over silent-fallback → STRUCTURAL (a meta-principle over ops)
36
+ * #7 PR-for-every-artifact → STRUCTURAL (no clean positive action
37
+ * token without contortion; "land via PR"
38
+ * is a property of the artifact-landing
39
+ * path, enforced by hooks/CI/review —
40
+ * science leaned structural; concurred)
41
+ * #8 auditor never-acts → NORM prohibition (×3 actions)
42
+ * #9 operator-as-ratifier → NORM obligation
43
+ * #10 universal rules not locally → NORM prohibition
44
+ * mutable
45
+ */
46
+ import { NormSchema, NORM_SCHEMA_VERSION, NORM_KIND } from './norm.js';
47
+ import { z } from 'zod';
48
+ /**
49
+ * A protected invariant that is a structural PROPERTY rather than a deontic
50
+ * norm. `statement` restates the guarantee; `whyNotANorm` records why it
51
+ * resists the `(role, action, condition)` shape; `enforcement` names the
52
+ * mechanism that actually guarantees it at runtime.
53
+ */
54
+ export const StructuralInvariantSchema = z.object({
55
+ id: z.string(),
56
+ statement: z.string(),
57
+ whyNotANorm: z.string(),
58
+ enforcement: z.string(),
59
+ });
60
+ /** Shorthand to build a validated `Norm` with the fixed envelope fields. */
61
+ function norm(spec) {
62
+ return NormSchema.parse({
63
+ ...spec,
64
+ schema_version: NORM_SCHEMA_VERSION,
65
+ kind: NORM_KIND,
66
+ });
67
+ }
68
+ /**
69
+ * The norm-expressible protected invariants. Each `provenance` points back at
70
+ * the numbered entry in `design/protected-invariants.md`.
71
+ */
72
+ export const PROTECTED_INVARIANT_NORMS = [
73
+ // #1 — the agent who opened an issue owns its closure (after the fix merges).
74
+ norm({
75
+ id: 'pi-1-reporter-owns-closure',
76
+ role: 'reporter',
77
+ deontic: 'obligation',
78
+ action: 'close-issue',
79
+ condition: 'after-merge',
80
+ tier: 'universal',
81
+ provenance: 'protected-invariants.md #1',
82
+ }),
83
+ // #3 — no PR merges without a non-author APPROVED review.
84
+ norm({
85
+ id: 'pi-3-lgtm-gate',
86
+ role: 'implementer',
87
+ deontic: 'prohibition',
88
+ action: 'merge-pr',
89
+ condition: 'without-non-author-approval',
90
+ tier: 'universal',
91
+ provenance: 'protected-invariants.md #3',
92
+ }),
93
+ // #5 — never use a GitHub auto-close keyword on a foreign-reporter issue.
94
+ norm({
95
+ id: 'pi-5-auto-close-discipline',
96
+ role: 'implementer',
97
+ deontic: 'prohibition',
98
+ action: 'auto-close-keyword',
99
+ condition: 'on-foreign-reporter-issue',
100
+ tier: 'universal',
101
+ provenance: 'protected-invariants.md #5',
102
+ }),
103
+ // #8 — the auditor proposes only; it can neither merge, close others' work,
104
+ // nor implement. Modelled as three positive-action prohibitions (the
105
+ // positive-action convention forbids a single negated "act" token).
106
+ norm({
107
+ id: 'pi-8-auditor-never-merge',
108
+ role: 'auditor',
109
+ deontic: 'prohibition',
110
+ action: 'merge-pr',
111
+ condition: 'always',
112
+ tier: 'universal',
113
+ provenance: 'protected-invariants.md #8',
114
+ }),
115
+ norm({
116
+ id: 'pi-8-auditor-never-close',
117
+ role: 'auditor',
118
+ deontic: 'prohibition',
119
+ action: 'close-issue',
120
+ condition: 'always',
121
+ tier: 'universal',
122
+ provenance: 'protected-invariants.md #8',
123
+ }),
124
+ norm({
125
+ id: 'pi-8-auditor-never-implement',
126
+ role: 'auditor',
127
+ deontic: 'prohibition',
128
+ action: 'implement',
129
+ condition: 'always',
130
+ tier: 'universal',
131
+ provenance: 'protected-invariants.md #8',
132
+ }),
133
+ // #9 — no rule change is auto-applied; the operator ratifies.
134
+ norm({
135
+ id: 'pi-9-operator-ratifier',
136
+ role: 'operator',
137
+ deontic: 'obligation',
138
+ action: 'ratify-rule-change',
139
+ condition: 'always',
140
+ tier: 'universal',
141
+ provenance: 'protected-invariants.md #9',
142
+ }),
143
+ // #10 — a deployment may only PR universal rules upstream; never patch them
144
+ // locally.
145
+ norm({
146
+ id: 'pi-10-no-local-universal-mutation',
147
+ role: 'deployment',
148
+ deontic: 'prohibition',
149
+ action: 'mutate-universal-rule',
150
+ condition: 'always',
151
+ tier: 'universal',
152
+ provenance: 'protected-invariants.md #10',
153
+ }),
154
+ ];
155
+ /**
156
+ * The structural-property protected invariants. These are guarantees the
157
+ * conflict-checker does NOT reason over — they are enforced by mechanisms, not
158
+ * by deontic logic. Tagged here so the full set of 10 is accounted for and G3
159
+ * knows to route them to the structural-enforcement check, not the norm
160
+ * conflict-check.
161
+ */
162
+ export const PROTECTED_STRUCTURAL_INVARIANTS = [
163
+ {
164
+ id: 'pi-2-identity-attribution',
165
+ statement: 'Every agent action is attributed to that agent’s distinct external identity (its bot App), never silently to the operator or another agent.',
166
+ whyNotANorm: 'A cross-cutting PROPERTY of every action, not a single role’s deontic act on a (role, action, condition) key. There is no one "attribute" action to obligate/prohibit; the guarantee holds over all actions at once.',
167
+ enforcement: 'check-gh-token.sh (PreToolUse, ghs_ prefix) + check-gh-attribution.sh (PostToolUse result-invariant, macf#489/#491). silent-fallback Instances 1, 12.',
168
+ },
169
+ {
170
+ id: 'pi-4-routing-integrity',
171
+ statement: 'A cross-agent comment must carry a routing-active @mention to reach its recipient; describing-context mentions must not false-route.',
172
+ whyNotANorm: 'A property of the message-transport surface (a comment’s @mention is a delivery precondition), not a deontic action a role does. Modelling it as obligation(agent, mention, …) would contort a transport invariant into a role-action norm; science leaned structural and we concur.',
173
+ enforcement: 'check-mention-routing.sh Check A (must-have-mention) + Check B (must-not-leak describing-context). mention-routing-hygiene; macf#244/#272.',
174
+ },
175
+ {
176
+ id: 'pi-6-fail-loud',
177
+ statement: 'Operations that can silently fall back to a wrong identity/scope/target must assert a result-invariant, not merely an exit code.',
178
+ whyNotANorm: 'A meta-principle about HOW operations are written (assert the result, not just the exit code), spanning many actions — not a single (role, action, condition) deontic statement.',
179
+ enforcement: 'The result-invariant pattern (e.g. check-gh-attribution.sh checks who actually authored the resource). silent-fallback-hazards.',
180
+ },
181
+ {
182
+ id: 'pi-7-pr-for-every-artifact',
183
+ statement: 'Persistent artifacts land via PR (review + CI + audit + rollback checkpoint); only narrow operator-terminal recoveries excepted.',
184
+ whyNotANorm: 'No clean positive ACTION token captures "land via PR" without contortion — it is a property of the artifact-landing PATH (PR + review + CI), enforced by hooks/CI/review discipline, with an operator-terminal exception that a flat deontic norm cannot express. science leaned structural and we concur.',
185
+ enforcement: 'pr-discipline rules + the LGTM-gate hook (check-lgtm-gate.sh, macf#270) + CI required checks. pr-discipline; protected-invariants.md #7.',
186
+ },
187
+ ];
188
+ /**
189
+ * Short machine-readable taxonomy note: which of the 10 invariants became a
190
+ * norm vs a structural property. Mirrors `design/structured-norms.md`.
191
+ */
192
+ export const PROTECTED_INVARIANT_TAXONOMY = {
193
+ normExpressible: [1, 3, 5, 8, 9, 10],
194
+ structural: [2, 4, 6, 7],
195
+ };
196
+ //# sourceMappingURL=protected-invariant-norms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-invariant-norms.js","sourceRoot":"","sources":["../src/protected-invariant-norms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Versioned reflection-record schema (groundnuty/macf#500, DR-026 F2).
3
+ *
4
+ * A "reflection" is a single JSON object an agent emits at compaction time:
5
+ * the `harvest-reflection.sh` PreCompact hook (Deliverable 2) reads a *staged*
6
+ * reflection the agent maintains incrementally in
7
+ * `.claude/.macf/reflections/pending.json` (see `reflection-staging.md`), wraps
8
+ * it in this schema envelope, and appends it as one line to a local JSONL
9
+ * ledger. F4's Monitor imports this schema to read the ledger back.
10
+ *
11
+ * Forward-compat is carried by two envelope fields:
12
+ * - `schema_version` ("1.0") — F4's reader can branch on the version when the
13
+ * shape evolves.
14
+ * - `kind` ("macf.reflection") — a stable type-tag so a multi-kind ledger (or
15
+ * a shared bus) can discriminate reflection records from other record types.
16
+ *
17
+ * Defaults make a *mechanical-only* record valid: every array defaults to `[]`
18
+ * and `synthesis` to `""`. The hook ALWAYS emits a record at PreCompact (even
19
+ * with no staged content) so the Monitor sees that a compaction happened.
20
+ *
21
+ * The optional `key` fields on `observed_patterns` / `rule_evolution_signals`
22
+ * are reserved for deterministic cross-agent dedup later (G1's membrane) —
23
+ * additive and unused now.
24
+ */
25
+ import { z } from 'zod';
26
+ /** Current reflection schema version. Bump on a breaking shape change. */
27
+ export declare const REFLECTION_SCHEMA_VERSION: "1.0";
28
+ /** Stable type-tag distinguishing reflection records on a multi-kind ledger. */
29
+ export declare const REFLECTION_KIND: "macf.reflection";
30
+ /**
31
+ * A pattern the agent observed during the session — a recurring behaviour,
32
+ * coordination dynamic, or workflow shape worth surfacing. `tier_hint` is the
33
+ * agent's loose guess at where this belongs (e.g. a rule tier / promotion
34
+ * path); kept as a free-form string so the schema doesn't pin a taxonomy the
35
+ * governance layer hasn't frozen yet. `key` (optional) is the future
36
+ * cross-agent dedup handle — additive, unused now.
37
+ */
38
+ export declare const ObservedPatternSchema: z.ZodObject<{
39
+ pattern: z.ZodString;
40
+ evidence: z.ZodString;
41
+ tier_hint: z.ZodString;
42
+ key: z.ZodOptional<z.ZodString>;
43
+ }, z.core.$strip>;
44
+ export type ObservedPattern = z.infer<typeof ObservedPatternSchema>;
45
+ /**
46
+ * A canonical-rule breach the agent committed or witnessed. `rule` names the
47
+ * rule, `what` describes the breach, `ref` points at the supporting evidence
48
+ * (an issue/PR/commit ref, a file:line, a rule-doc anchor).
49
+ */
50
+ export declare const ReflectionBreachSchema: z.ZodObject<{
51
+ rule: z.ZodString;
52
+ what: z.ZodString;
53
+ ref: z.ZodString;
54
+ }, z.core.$strip>;
55
+ export type ReflectionBreach = z.infer<typeof ReflectionBreachSchema>;
56
+ /**
57
+ * A signal that a coordination rule should evolve — a proposal the governance
58
+ * layer (DR-026 auditor) can later weigh. `proposed_tier` is the tier the agent
59
+ * suggests the signal be promoted into (free-form for the same reason as
60
+ * `tier_hint` above). `key` (optional) is the future cross-agent dedup handle.
61
+ */
62
+ export declare const RuleEvolutionSignalSchema: z.ZodObject<{
63
+ signal: z.ZodString;
64
+ proposed_tier: z.ZodString;
65
+ rationale: z.ZodString;
66
+ key: z.ZodOptional<z.ZodString>;
67
+ }, z.core.$strip>;
68
+ export type RuleEvolutionSignal = z.infer<typeof RuleEvolutionSignalSchema>;
69
+ /** The agent's identity at emission time. */
70
+ export declare const ReflectionAgentSchema: z.ZodObject<{
71
+ name: z.ZodString;
72
+ role: z.ZodString;
73
+ login: z.ZodString;
74
+ }, z.core.$strip>;
75
+ export type ReflectionAgent = z.infer<typeof ReflectionAgentSchema>;
76
+ /**
77
+ * The full reflection record — one JSON object per JSONL line.
78
+ *
79
+ * `compaction_type` mirrors the PreCompact payload's `trigger` field
80
+ * ("auto" | "manual"); `null` when the hook couldn't read it. `trigger` is the
81
+ * fixed literal `"pre-compact"` recording WHICH hook produced the record (room
82
+ * for future non-compaction reflection emitters).
83
+ */
84
+ export declare const ReflectionRecordSchema: z.ZodObject<{
85
+ schema_version: z.ZodLiteral<"1.0">;
86
+ kind: z.ZodLiteral<"macf.reflection">;
87
+ agent: z.ZodObject<{
88
+ name: z.ZodString;
89
+ role: z.ZodString;
90
+ login: z.ZodString;
91
+ }, z.core.$strip>;
92
+ project: z.ZodString;
93
+ session_id: z.ZodString;
94
+ timestamp: z.ZodString;
95
+ trigger: z.ZodLiteral<"pre-compact">;
96
+ compaction_type: z.ZodNullable<z.ZodEnum<{
97
+ auto: "auto";
98
+ manual: "manual";
99
+ }>>;
100
+ observed_patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
101
+ pattern: z.ZodString;
102
+ evidence: z.ZodString;
103
+ tier_hint: z.ZodString;
104
+ key: z.ZodOptional<z.ZodString>;
105
+ }, z.core.$strip>>>;
106
+ breaches: z.ZodDefault<z.ZodArray<z.ZodObject<{
107
+ rule: z.ZodString;
108
+ what: z.ZodString;
109
+ ref: z.ZodString;
110
+ }, z.core.$strip>>>;
111
+ rule_evolution_signals: z.ZodDefault<z.ZodArray<z.ZodObject<{
112
+ signal: z.ZodString;
113
+ proposed_tier: z.ZodString;
114
+ rationale: z.ZodString;
115
+ key: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>>>;
117
+ unresolved: z.ZodDefault<z.ZodArray<z.ZodString>>;
118
+ synthesis: z.ZodDefault<z.ZodString>;
119
+ }, z.core.$strip>;
120
+ export type ReflectionRecord = z.infer<typeof ReflectionRecordSchema>;
121
+ /**
122
+ * The staged-reflection shape the agent maintains in
123
+ * `.claude/.macf/reflections/pending.json` (see `reflection-staging.md`). Only
124
+ * the protocol-signal fields live here — the envelope (`schema_version`,
125
+ * `kind`, `agent`, `project`, `session_id`, `timestamp`, `trigger`,
126
+ * `compaction_type`) is added by the hook at harvest time. Every field is
127
+ * optional/defaulted so an empty `{}` stage is valid (and is what the hook
128
+ * writes back to clear the stage).
129
+ */
130
+ export declare const ReflectionStageSchema: z.ZodObject<{
131
+ observed_patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
132
+ pattern: z.ZodString;
133
+ evidence: z.ZodString;
134
+ tier_hint: z.ZodString;
135
+ key: z.ZodOptional<z.ZodString>;
136
+ }, z.core.$strip>>>;
137
+ breaches: z.ZodDefault<z.ZodArray<z.ZodObject<{
138
+ rule: z.ZodString;
139
+ what: z.ZodString;
140
+ ref: z.ZodString;
141
+ }, z.core.$strip>>>;
142
+ rule_evolution_signals: z.ZodDefault<z.ZodArray<z.ZodObject<{
143
+ signal: z.ZodString;
144
+ proposed_tier: z.ZodString;
145
+ rationale: z.ZodString;
146
+ key: z.ZodOptional<z.ZodString>;
147
+ }, z.core.$strip>>>;
148
+ unresolved: z.ZodDefault<z.ZodArray<z.ZodString>>;
149
+ synthesis: z.ZodDefault<z.ZodString>;
150
+ }, z.core.$strip>;
151
+ export type ReflectionStage = z.infer<typeof ReflectionStageSchema>;
152
+ //# sourceMappingURL=reflection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,EAAG,KAAc,CAAC;AAExD,gFAAgF;AAChF,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;iBAKhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;;iBAKpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;iBAMhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Versioned reflection-record schema (groundnuty/macf#500, DR-026 F2).
3
+ *
4
+ * A "reflection" is a single JSON object an agent emits at compaction time:
5
+ * the `harvest-reflection.sh` PreCompact hook (Deliverable 2) reads a *staged*
6
+ * reflection the agent maintains incrementally in
7
+ * `.claude/.macf/reflections/pending.json` (see `reflection-staging.md`), wraps
8
+ * it in this schema envelope, and appends it as one line to a local JSONL
9
+ * ledger. F4's Monitor imports this schema to read the ledger back.
10
+ *
11
+ * Forward-compat is carried by two envelope fields:
12
+ * - `schema_version` ("1.0") — F4's reader can branch on the version when the
13
+ * shape evolves.
14
+ * - `kind` ("macf.reflection") — a stable type-tag so a multi-kind ledger (or
15
+ * a shared bus) can discriminate reflection records from other record types.
16
+ *
17
+ * Defaults make a *mechanical-only* record valid: every array defaults to `[]`
18
+ * and `synthesis` to `""`. The hook ALWAYS emits a record at PreCompact (even
19
+ * with no staged content) so the Monitor sees that a compaction happened.
20
+ *
21
+ * The optional `key` fields on `observed_patterns` / `rule_evolution_signals`
22
+ * are reserved for deterministic cross-agent dedup later (G1's membrane) —
23
+ * additive and unused now.
24
+ */
25
+ import { z } from 'zod';
26
+ /** Current reflection schema version. Bump on a breaking shape change. */
27
+ export const REFLECTION_SCHEMA_VERSION = '1.0';
28
+ /** Stable type-tag distinguishing reflection records on a multi-kind ledger. */
29
+ export const REFLECTION_KIND = 'macf.reflection';
30
+ /**
31
+ * A pattern the agent observed during the session — a recurring behaviour,
32
+ * coordination dynamic, or workflow shape worth surfacing. `tier_hint` is the
33
+ * agent's loose guess at where this belongs (e.g. a rule tier / promotion
34
+ * path); kept as a free-form string so the schema doesn't pin a taxonomy the
35
+ * governance layer hasn't frozen yet. `key` (optional) is the future
36
+ * cross-agent dedup handle — additive, unused now.
37
+ */
38
+ export const ObservedPatternSchema = z.object({
39
+ pattern: z.string(),
40
+ evidence: z.string(),
41
+ tier_hint: z.string(),
42
+ key: z.string().optional(),
43
+ });
44
+ /**
45
+ * A canonical-rule breach the agent committed or witnessed. `rule` names the
46
+ * rule, `what` describes the breach, `ref` points at the supporting evidence
47
+ * (an issue/PR/commit ref, a file:line, a rule-doc anchor).
48
+ */
49
+ export const ReflectionBreachSchema = z.object({
50
+ rule: z.string(),
51
+ what: z.string(),
52
+ ref: z.string(),
53
+ });
54
+ /**
55
+ * A signal that a coordination rule should evolve — a proposal the governance
56
+ * layer (DR-026 auditor) can later weigh. `proposed_tier` is the tier the agent
57
+ * suggests the signal be promoted into (free-form for the same reason as
58
+ * `tier_hint` above). `key` (optional) is the future cross-agent dedup handle.
59
+ */
60
+ export const RuleEvolutionSignalSchema = z.object({
61
+ signal: z.string(),
62
+ proposed_tier: z.string(),
63
+ rationale: z.string(),
64
+ key: z.string().optional(),
65
+ });
66
+ /** The agent's identity at emission time. */
67
+ export const ReflectionAgentSchema = z.object({
68
+ name: z.string(),
69
+ role: z.string(),
70
+ login: z.string(),
71
+ });
72
+ /**
73
+ * The full reflection record — one JSON object per JSONL line.
74
+ *
75
+ * `compaction_type` mirrors the PreCompact payload's `trigger` field
76
+ * ("auto" | "manual"); `null` when the hook couldn't read it. `trigger` is the
77
+ * fixed literal `"pre-compact"` recording WHICH hook produced the record (room
78
+ * for future non-compaction reflection emitters).
79
+ */
80
+ export const ReflectionRecordSchema = z.object({
81
+ schema_version: z.literal(REFLECTION_SCHEMA_VERSION),
82
+ kind: z.literal(REFLECTION_KIND),
83
+ agent: ReflectionAgentSchema,
84
+ project: z.string(),
85
+ session_id: z.string(),
86
+ // ISO8601 UTC, e.g. 2026-06-16T04:40:39Z.
87
+ timestamp: z.string(),
88
+ trigger: z.literal('pre-compact'),
89
+ compaction_type: z.enum(['auto', 'manual']).nullable(),
90
+ // Arrays default [] and synthesis defaults "" → a mechanical-only record
91
+ // (no staged content) is valid. `.default()` keeps the field optional on the
92
+ // wire while inferring a non-optional type for consumers.
93
+ observed_patterns: z.array(ObservedPatternSchema).default([]),
94
+ breaches: z.array(ReflectionBreachSchema).default([]),
95
+ rule_evolution_signals: z.array(RuleEvolutionSignalSchema).default([]),
96
+ unresolved: z.array(z.string()).default([]),
97
+ synthesis: z.string().default(''),
98
+ });
99
+ /**
100
+ * The staged-reflection shape the agent maintains in
101
+ * `.claude/.macf/reflections/pending.json` (see `reflection-staging.md`). Only
102
+ * the protocol-signal fields live here — the envelope (`schema_version`,
103
+ * `kind`, `agent`, `project`, `session_id`, `timestamp`, `trigger`,
104
+ * `compaction_type`) is added by the hook at harvest time. Every field is
105
+ * optional/defaulted so an empty `{}` stage is valid (and is what the hook
106
+ * writes back to clear the stage).
107
+ */
108
+ export const ReflectionStageSchema = z.object({
109
+ observed_patterns: z.array(ObservedPatternSchema).default([]),
110
+ breaches: z.array(ReflectionBreachSchema).default([]),
111
+ rule_evolution_signals: z.array(RuleEvolutionSignalSchema).default([]),
112
+ unresolved: z.array(z.string()).default([]),
113
+ synthesis: z.string().default(''),
114
+ });
115
+ //# sourceMappingURL=reflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export { AgentInfoSchema, RegistryConfigSchema, OrgRegistryConfigSchema, ProfileRegistryConfigSchema, RepoRegistryConfigSchema, LocalRegistryConfigSchema } from './types.js';
2
- export type { AgentInfo, Registry, RegistryConfig, GitHubVariablesClient } from './types.js';
1
+ export { AgentInfoSchema, agentInfoEquals, RegistryConfigSchema, OrgRegistryConfigSchema, ProfileRegistryConfigSchema, RepoRegistryConfigSchema, LocalRegistryConfigSchema } from './types.js';
2
+ export type { AgentInfo, Registry, RegisterResult, RegistryConfig, GitHubVariablesClient } from './types.js';
3
3
  export { createGitHubClient, GitHubApiError } from './github-client.js';
4
4
  export { createRegistry } from './registry.js';
5
5
  export { createRegistryFromConfig } from './factory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC9K,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzH,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC/L,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC7G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzH,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { AgentInfoSchema, RegistryConfigSchema, OrgRegistryConfigSchema, ProfileRegistryConfigSchema, RepoRegistryConfigSchema, LocalRegistryConfigSchema } from './types.js';
1
+ export { AgentInfoSchema, agentInfoEquals, RegistryConfigSchema, OrgRegistryConfigSchema, ProfileRegistryConfigSchema, RepoRegistryConfigSchema, LocalRegistryConfigSchema } from './types.js';
2
2
  export { createGitHubClient, GitHubApiError } from './github-client.js';
3
3
  export { createRegistry } from './registry.js';
4
4
  export { createRegistryFromConfig } from './factory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE9K,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEzH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE/L,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAEzH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../../src/registry/local-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAa,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI1C;AAuLD,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA6CD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,QAAQ,CA2EV"}
1
+ {"version":3,"file":"local-client.d.ts","sourceRoot":"","sources":["../../src/registry/local-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAa,QAAQ,EAAkB,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI1C;AAuLD,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA6CD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,oBAAoB,GAC5B,QAAQ,CA2GV"}
@@ -4,7 +4,7 @@ import { randomBytes } from 'node:crypto';
4
4
  import lockfile from 'proper-lockfile';
5
5
  import { z } from 'zod';
6
6
  import { MacfError } from '../errors.js';
7
- import { AgentInfoSchema } from './types.js';
7
+ import { AgentInfoSchema, agentInfoEquals } from './types.js';
8
8
  /**
9
9
  * Local registry implementation per DR-024.
10
10
  *
@@ -251,6 +251,31 @@ export function createLocalRegistry(options) {
251
251
  await writeRegistryFileAtomic(options.path, next);
252
252
  });
253
253
  },
254
+ // CAS register (groundnuty/macf#439). Fully atomic for the local backend:
255
+ // the read (current slot), the compare against `expected`, and the write
256
+ // all happen inside the same `withLock` critical section, so a racing
257
+ // second writer is serialized behind the lock and observes the first
258
+ // writer's value — failing the compare and backing off (ok:false). No
259
+ // read-back verify is needed (unlike the GitHub backend), because the lock
260
+ // makes the compare-then-write indivisible.
261
+ async registerConditional(name, info, expected) {
262
+ const validated = AgentInfoSchema.parse(info);
263
+ return withLock(options.path, async () => {
264
+ const existing = await readRegistryFile(options.path);
265
+ const current = existing?.agents[name] ?? null;
266
+ if (!agentInfoEquals(current, expected)) {
267
+ return { ok: false, current };
268
+ }
269
+ const file = existing ?? emptyRegistry(options.project);
270
+ const next = {
271
+ schema_version: REGISTRY_SCHEMA_VERSION,
272
+ project: options.project,
273
+ agents: { ...file.agents, [name]: validated },
274
+ };
275
+ await writeRegistryFileAtomic(options.path, next);
276
+ return { ok: true, current: validated };
277
+ });
278
+ },
254
279
  async get(name) {
255
280
  const file = await readRegistryFile(options.path);
256
281
  if (file === null)
@@ -1 +1 @@
1
- {"version":3,"file":"local-client.js","sourceRoot":"","sources":["../../src/registry/local-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-client.js","sourceRoot":"","sources":["../../src/registry/local-client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,MAAM,GACd,QAAQ,CAgEV"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,QAAQ,EAAkB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE7F;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,MAAM,GACd,QAAQ,CAqHV"}