@telora/daemon 0.20.9 → 0.20.21

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.
Files changed (77) hide show
  1. package/build-info.json +9 -3
  2. package/dist/cli/session-state.d.ts.map +1 -1
  3. package/dist/cli/session-state.js +6 -1
  4. package/dist/cli/session-state.js.map +1 -1
  5. package/dist/completion/review-exit-phase.d.ts +2 -0
  6. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  7. package/dist/completion/review-exit-phase.js +59 -5
  8. package/dist/completion/review-exit-phase.js.map +1 -1
  9. package/dist/completion/review-exit-shortfall.d.ts +62 -0
  10. package/dist/completion/review-exit-shortfall.d.ts.map +1 -0
  11. package/dist/completion/review-exit-shortfall.js +84 -0
  12. package/dist/completion/review-exit-shortfall.js.map +1 -0
  13. package/dist/drift-ratify-loop.d.ts +68 -0
  14. package/dist/drift-ratify-loop.d.ts.map +1 -0
  15. package/dist/drift-ratify-loop.js +161 -0
  16. package/dist/drift-ratify-loop.js.map +1 -0
  17. package/dist/drift-ratify-policy.d.ts +101 -0
  18. package/dist/drift-ratify-policy.d.ts.map +1 -0
  19. package/dist/drift-ratify-policy.js +178 -0
  20. package/dist/drift-ratify-policy.js.map +1 -0
  21. package/dist/focus-loop-registry.d.ts.map +1 -1
  22. package/dist/focus-loop-registry.js +49 -0
  23. package/dist/focus-loop-registry.js.map +1 -1
  24. package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
  25. package/dist/prompt-sections/persona-sections.js +41 -4
  26. package/dist/prompt-sections/persona-sections.js.map +1 -1
  27. package/dist/queries/deliveries.d.ts +22 -0
  28. package/dist/queries/deliveries.d.ts.map +1 -1
  29. package/dist/queries/deliveries.js +6 -0
  30. package/dist/queries/deliveries.js.map +1 -1
  31. package/dist/queries/focuses.d.ts +9 -0
  32. package/dist/queries/focuses.d.ts.map +1 -1
  33. package/dist/queries/focuses.js +14 -0
  34. package/dist/queries/focuses.js.map +1 -1
  35. package/dist/queries/reality-tree.d.ts +22 -0
  36. package/dist/queries/reality-tree.d.ts.map +1 -1
  37. package/dist/queries/reality-tree.js +32 -0
  38. package/dist/queries/reality-tree.js.map +1 -1
  39. package/dist/queries/schemas.d.ts +2 -0
  40. package/dist/queries/schemas.d.ts.map +1 -1
  41. package/dist/queries/schemas.js +5 -0
  42. package/dist/queries/schemas.js.map +1 -1
  43. package/dist/resolvers/drift-shortfall-proposals.d.ts +27 -0
  44. package/dist/resolvers/drift-shortfall-proposals.d.ts.map +1 -0
  45. package/dist/resolvers/drift-shortfall-proposals.js +90 -0
  46. package/dist/resolvers/drift-shortfall-proposals.js.map +1 -0
  47. package/dist/resolvers/index.d.ts.map +1 -1
  48. package/dist/resolvers/index.js +2 -0
  49. package/dist/resolvers/index.js.map +1 -1
  50. package/dist/shortfall-disposition-config.d.ts +34 -0
  51. package/dist/shortfall-disposition-config.d.ts.map +1 -0
  52. package/dist/shortfall-disposition-config.js +46 -0
  53. package/dist/shortfall-disposition-config.js.map +1 -0
  54. package/dist/shortfall-disposition-loop.d.ts +86 -0
  55. package/dist/shortfall-disposition-loop.d.ts.map +1 -0
  56. package/dist/shortfall-disposition-loop.js +309 -0
  57. package/dist/shortfall-disposition-loop.js.map +1 -0
  58. package/dist/unified-shell-status.d.ts.map +1 -1
  59. package/dist/unified-shell-status.js +5 -1
  60. package/dist/unified-shell-status.js.map +1 -1
  61. package/dist/verification-config.d.ts +64 -15
  62. package/dist/verification-config.d.ts.map +1 -1
  63. package/dist/verification-config.js +66 -21
  64. package/dist/verification-config.js.map +1 -1
  65. package/dist/verification-default-on.d.ts +73 -1
  66. package/dist/verification-default-on.d.ts.map +1 -1
  67. package/dist/verification-default-on.js +79 -0
  68. package/dist/verification-default-on.js.map +1 -1
  69. package/dist/verification-engine.d.ts +1 -1
  70. package/dist/verification-engine.d.ts.map +1 -1
  71. package/dist/verification-engine.js +26 -15
  72. package/dist/verification-engine.js.map +1 -1
  73. package/dist/verification-manifest.d.ts +110 -0
  74. package/dist/verification-manifest.d.ts.map +1 -0
  75. package/dist/verification-manifest.js +150 -0
  76. package/dist/verification-manifest.js.map +1 -0
  77. package/package.json +2 -2
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Periodic drift auto-ratification tick.
3
+ *
4
+ * Lists `proposed` drift proposals per product, runs each through the
5
+ * fail-closed policy in `drift-ratify-policy.ts`, and ratifies the ones the
6
+ * daemon is sanctioned to ratify unattended. Proposals the policy routes to a
7
+ * review session (`review_dispose`) or refuses to classify (`hold`) are left
8
+ * in `proposed`, untouched.
9
+ *
10
+ * WHAT THIS CLOSES. Drift proposals pooled in `proposed` faster than a human
11
+ * could ratify them, so the reality tree lagged observed reality and every
12
+ * consumer of the graph (audit assembly, propose_injections, focus.context)
13
+ * computed against a stale intent model. The ledger is unchanged -- this only
14
+ * changes WHO ratifies. Ratified proposals still reach the graph exclusively
15
+ * via the existing realign_crt phase (`applyRatifiedProposals`), which this
16
+ * module does not touch.
17
+ *
18
+ * WHAT THIS MUST NEVER DO. Ratify an inward shortfall. That is the machine
19
+ * rewriting a claim its own work failed to meet. The policy module owns that
20
+ * decision; this tick owns only list -> classify -> ratify-the-safe-ones, and
21
+ * deliberately contains no safe-kind rules of its own. If you find yourself
22
+ * adding kind logic here, it belongs in drift-ratify-policy.ts.
23
+ *
24
+ * ACTOR STAMP. The tick calls `crt_drift_proposal_ratify` with no session id.
25
+ * The edge handler resolves the actor from the caller's credential kind, so a
26
+ * tracker-authenticated daemon call is recorded as `ratified_by_kind='system'`
27
+ * with `ratified_by=NULL` automatically. Passing a session id would instead
28
+ * stamp `review_session` -- that is the review-disposition path, not this one.
29
+ *
30
+ * Activation: opt-out via TELORA_DRIFT_RATIFY_LOOP=0. See `shouldRunLoop()` in
31
+ * focus-engine.ts.
32
+ *
33
+ * @module drift-ratify-loop
34
+ */
35
+ import { loadEnvConfig } from '@telora/daemon-core';
36
+ import { callApi as defaultCallApi } from './queries/shared.js';
37
+ import { classifyDriftProposal } from './drift-ratify-policy.js';
38
+ import { createLogger } from './log.js';
39
+ const log = createLogger({ module: 'drift-ratify-loop' });
40
+ /**
41
+ * Per-product backoff for list failures, so a persistent server-side failure
42
+ * does not retry-storm every tick. Module-level so the window survives across
43
+ * `runDriftRatifyTick` calls within the daemon process. Keyed productId ->
44
+ * earliest next-attempt epoch ms. Mirrors the drift-eval loop's window
45
+ * (drift-eval-loop.ts:74) and complements the isolated 'drift' circuit breaker
46
+ * in queries/shared.ts, which fails fast once the breaker opens.
47
+ */
48
+ const listBackoffUntil = new Map();
49
+ /**
50
+ * Resolve the per-product list-failure backoff window (ms).
51
+ *
52
+ * Deliberately REUSES TELORA_DRIFT_LIST_BACKOFF_MS rather than introducing a
53
+ * knob of its own. The knob's meaning -- how long to back off a product after a
54
+ * drift-list failure -- is exactly this loop's need, and both loops fail the
55
+ * same way for the same reasons, so one operator dial covering both is coherent
56
+ * rather than a conflation. It also keeps this loop free of any dependency on a
57
+ * @telora/daemon-core republish: daemon-core is registry-installed, so a new
58
+ * knob added to its source would be invisible to this package until it is
59
+ * published and reinstalled. Injectable via deps for tests.
60
+ */
61
+ function defaultListBackoffMs() {
62
+ return loadEnvConfig().TELORA_DRIFT_LIST_BACKOFF_MS;
63
+ }
64
+ /** Test-only: clear the per-product list-failure backoff state. */
65
+ export function __resetDriftRatifyBackoffForTesting() {
66
+ listBackoffUntil.clear();
67
+ }
68
+ function defaultDeps() {
69
+ return {
70
+ callApi: defaultCallApi,
71
+ now: () => Date.now(),
72
+ listBackoffMs: defaultListBackoffMs(),
73
+ };
74
+ }
75
+ /**
76
+ * Run one auto-ratification tick across every product in the daemon config.
77
+ *
78
+ * Per-proposal failures are counted and skipped, never aborting the batch --
79
+ * one unratifiable proposal must not strand the rest of the stream (mirrors
80
+ * `applyRatifiedProposals`, realign-apply.ts:403-416).
81
+ *
82
+ * Returns counters useful for log lines and tests.
83
+ */
84
+ export async function runDriftRatifyTick(config, depOverrides = {}) {
85
+ const deps = { ...defaultDeps(), ...depOverrides };
86
+ const counts = {
87
+ productsScanned: 0,
88
+ productsSkipped: 0,
89
+ proposalsExamined: 0,
90
+ ratified: 0,
91
+ leftForReview: 0,
92
+ held: 0,
93
+ errors: 0,
94
+ };
95
+ for (const product of config.products) {
96
+ counts.productsScanned += 1;
97
+ // Skip a product still inside its list-failure backoff window.
98
+ const nowMs = deps.now();
99
+ const backoffUntil = listBackoffUntil.get(product.id) ?? 0;
100
+ if (nowMs < backoffUntil) {
101
+ counts.productsSkipped += 1;
102
+ continue;
103
+ }
104
+ let proposals;
105
+ try {
106
+ // NOTE: crt_drift_proposal_list cannot filter on proposed_metadata
107
+ // (drift-proposals.ts:78-119 supports focusId/productId/realityTreeId/
108
+ // status only), so the shortfall split is decided client-side by the
109
+ // policy below -- not by the query.
110
+ const list = await deps.callApi('crt_drift_proposal_list', {
111
+ productId: product.id,
112
+ status: 'proposed',
113
+ });
114
+ proposals = list.items ?? [];
115
+ // Success clears any prior backoff for this product.
116
+ listBackoffUntil.delete(product.id);
117
+ }
118
+ catch (err) {
119
+ counts.errors += 1;
120
+ listBackoffUntil.set(product.id, nowMs + deps.listBackoffMs);
121
+ log.warn(`[drift-ratify-loop] list failed for product ${product.id} (backing off ${deps.listBackoffMs}ms):`, err.message);
122
+ continue;
123
+ }
124
+ for (const proposal of proposals) {
125
+ counts.proposalsExamined += 1;
126
+ const { disposition, reason } = classifyDriftProposal({
127
+ proposalKind: proposal.proposalKind,
128
+ proposedMetadata: proposal.proposedMetadata,
129
+ });
130
+ if (disposition === 'review_dispose') {
131
+ // The bar-lowering channel. Left in `proposed` for an independent
132
+ // review session; this tick must not touch it.
133
+ counts.leftForReview += 1;
134
+ continue;
135
+ }
136
+ if (disposition === 'hold') {
137
+ // Fail-closed: unknown kind, malformed metadata, or an internally
138
+ // inconsistent row. Stays `proposed` so a human sees it.
139
+ counts.held += 1;
140
+ log.info(`[drift-ratify-loop] holding proposal ${proposal.id} (kind=${proposal.proposalKind}, reason=${reason})`);
141
+ continue;
142
+ }
143
+ try {
144
+ // No session id: the edge handler stamps ratified_by_kind='system' from
145
+ // the tracker credential. Ratified proposals reach the graph via the
146
+ // existing realign_crt phase; nothing here applies them.
147
+ await deps.callApi('crt_drift_proposal_ratify', { proposalId: proposal.id });
148
+ counts.ratified += 1;
149
+ }
150
+ catch (err) {
151
+ counts.errors += 1;
152
+ log.warn(`[drift-ratify-loop] ratify failed for proposal ${proposal.id} (${reason}):`, err.message);
153
+ }
154
+ }
155
+ }
156
+ if (counts.proposalsExamined > 0 || counts.errors > 0 || counts.productsSkipped > 0) {
157
+ log.info(`[drift-ratify-loop] tick: products=${counts.productsScanned} skipped=${counts.productsSkipped} examined=${counts.proposalsExamined} ratified=${counts.ratified} forReview=${counts.leftForReview} held=${counts.held} errors=${counts.errors}`);
158
+ }
159
+ return counts;
160
+ }
161
+ //# sourceMappingURL=drift-ratify-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-ratify-loop.js","sourceRoot":"","sources":["../src/drift-ratify-loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Auto-ratification policy for CRT drift proposals.
3
+ *
4
+ * Pure module: takes a proposal's kind plus its untrusted `proposed_metadata`
5
+ * JSONB and returns the disposition the daemon owes it. No fs, process, or
6
+ * supabase imports — the auto-ratify tick wires the API and performs the
7
+ * ratification.
8
+ *
9
+ * WHY THIS EXISTS. Per-proposal human ratification cannot keep pace with the
10
+ * rate the machine corrects its own tree, so the safe majority of the drift
11
+ * stream is ratified by the daemon. The lifecycle is unchanged: this decides
12
+ * WHO ratifies, never WHETHER the ledger records it. The
13
+ * proposed -> ratified -> applied path and `realign-apply.ts` run untouched.
14
+ *
15
+ * THE ASYMMETRY THIS PROTECTS. An inward SHORTFALL proposal says "the tree
16
+ * claimed X, and our own work delivered less than X". Auto-applying it would
17
+ * convert a re-code obligation into a silent statement edit — the machine
18
+ * lowering a bar it failed to clear. That channel is never auto-ratified; it
19
+ * routes to an independent review session (`review_dispose`). Everything here
20
+ * turns on that one distinction.
21
+ *
22
+ * FAIL-CLOSED BY CONSTRUCTION. Safety is an ALLOWLIST, not a denylist: a
23
+ * proposal is auto-ratified only when it affirmatively matches a sanctioned
24
+ * shape. Unknown kinds, malformed metadata, and internally inconsistent rows
25
+ * all `hold` — they stay `proposed` and a human sees them. A new proposal_kind
26
+ * added upstream therefore defaults to `hold` until someone deliberately adds
27
+ * it to SAFE_OUTWARD_KINDS. That default is the point; do not replace the
28
+ * allowlist with a denylist.
29
+ *
30
+ * @module drift-ratify-policy
31
+ */
32
+ /** What the daemon owes a proposal. */
33
+ export type DriftDisposition =
34
+ /** Daemon ratifies with a system actor; flows to applied via realign_crt. */
35
+ 'auto_ratify'
36
+ /** The bar-lowering channel: an independent review session must dispose it. */
37
+ | 'review_dispose'
38
+ /** Fail-closed. Stays `proposed`; a human decides. */
39
+ | 'hold';
40
+ /** Machine-readable justification. Stable — logs and the audit surface read it. */
41
+ export type DriftClassificationReason =
42
+ /** inward + shortfall: our work under-delivered against the claim. */
43
+ 'inward_shortfall'
44
+ /** inward + legitimate_divergence: delivered, but reality landed differently. */
45
+ | 'inward_legitimate_divergence'
46
+ /** An injection introduces a new UDE; additive and always add_node. */
47
+ | 'negative_branch'
48
+ /** Audit found the tree lagging observed reality; no inward contradiction. */
49
+ | 'outward_audit_drift'
50
+ /** proposed_metadata is not a JSON object (or a flag holds a non-boolean). */
51
+ | 'malformed_metadata'
52
+ /** proposal_kind is absent or not a kind this policy knows. */
53
+ | 'unknown_proposal_kind'
54
+ /** inward:true but verifyClassification is missing/unrecognized. */
55
+ | 'inward_unclassified'
56
+ /** isNegativeBranch:true on a kind negative-branch.ts never emits. */
57
+ | 'inconsistent_negative_branch'
58
+ /** A known kind deliberately outside the sanctioned auto-ratify set. */
59
+ | 'kind_not_auto_ratifiable';
60
+ export interface DriftClassification {
61
+ disposition: DriftDisposition;
62
+ reason: DriftClassificationReason;
63
+ }
64
+ export interface DriftProposalClassificationInput {
65
+ /**
66
+ * Widened to `string` on purpose: an unrecognized kind is a case this policy
67
+ * must CLASSIFY (as hold), not a case it may fail to compile against.
68
+ */
69
+ proposalKind: string;
70
+ /** Raw `proposed_metadata` JSONB. Untrusted: may be null, absent, or junk. */
71
+ proposedMetadata?: unknown;
72
+ }
73
+ /**
74
+ * Decide the disposition a drift proposal is owed.
75
+ *
76
+ * Precedence is load-bearing and ordered most-specific first:
77
+ * 1. unknown/absent kind -> hold
78
+ * 2. metadata present but not an object -> hold
79
+ * 3. a flag present with a non-boolean -> hold
80
+ * 4. inward:true + shortfall -> review_dispose <- the bar-lowering channel
81
+ * inward:true + legitimate_divergence -> auto_ratify
82
+ * inward:true + anything else -> hold
83
+ * 5. isNegativeBranch:true on add_node -> auto_ratify
84
+ * isNegativeBranch:true on other kinds -> hold (inconsistent provenance)
85
+ * 6. outward + kind in SAFE_OUTWARD_KINDS -> auto_ratify
86
+ * outward + known-but-unsanctioned -> hold
87
+ *
88
+ * Absent metadata means outward BY CONSTRUCTION, not by assumption:
89
+ * `detectInwardDrift` hardcodes `inward: true` (reality-writeback.ts:390) and
90
+ * `proposeNegativeBranchesForInjection` hardcodes `isNegativeBranch: true`
91
+ * (negative-branch.ts:305). Neither flag can be missing from a row that needs
92
+ * it, so absence of both is a sound outward signal.
93
+ *
94
+ * Pure. Total: every input yields a classification; nothing throws.
95
+ */
96
+ export declare function classifyDriftProposal(input: DriftProposalClassificationInput): DriftClassification;
97
+ /** Convenience predicate for the tick's filter step. */
98
+ export declare function isAutoRatifiable(input: DriftProposalClassificationInput): boolean;
99
+ /** Convenience predicate: does this proposal owe a review-session disposition? */
100
+ export declare function requiresReviewDisposition(input: DriftProposalClassificationInput): boolean;
101
+ //# sourceMappingURL=drift-ratify-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-ratify-policy.d.ts","sourceRoot":"","sources":["../src/drift-ratify-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,uCAAuC;AACvC,MAAM,MAAM,gBAAgB;AAC1B,6EAA6E;AAC3E,aAAa;AACf,+EAA+E;GAC7E,gBAAgB;AAClB,sDAAsD;GACpD,MAAM,CAAC;AAEX,mFAAmF;AACnF,MAAM,MAAM,yBAAyB;AACnC,sEAAsE;AACpE,kBAAkB;AACpB,iFAAiF;GAC/E,8BAA8B;AAChC,uEAAuE;GACrE,iBAAiB;AACnB,8EAA8E;GAC5E,qBAAqB;AACvB,8EAA8E;GAC5E,oBAAoB;AACtB,+DAA+D;GAC7D,uBAAuB;AACzB,oEAAoE;GAClE,qBAAqB;AACvB,sEAAsE;GACpE,8BAA8B;AAChC,wEAAwE;GACtE,0BAA0B,CAAC;AAE/B,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,MAAM,EAAE,yBAAyB,CAAC;CACnC;AAED,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAwED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gCAAgC,GACtC,mBAAmB,CAiErB;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAEjF;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAE1F"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Auto-ratification policy for CRT drift proposals.
3
+ *
4
+ * Pure module: takes a proposal's kind plus its untrusted `proposed_metadata`
5
+ * JSONB and returns the disposition the daemon owes it. No fs, process, or
6
+ * supabase imports — the auto-ratify tick wires the API and performs the
7
+ * ratification.
8
+ *
9
+ * WHY THIS EXISTS. Per-proposal human ratification cannot keep pace with the
10
+ * rate the machine corrects its own tree, so the safe majority of the drift
11
+ * stream is ratified by the daemon. The lifecycle is unchanged: this decides
12
+ * WHO ratifies, never WHETHER the ledger records it. The
13
+ * proposed -> ratified -> applied path and `realign-apply.ts` run untouched.
14
+ *
15
+ * THE ASYMMETRY THIS PROTECTS. An inward SHORTFALL proposal says "the tree
16
+ * claimed X, and our own work delivered less than X". Auto-applying it would
17
+ * convert a re-code obligation into a silent statement edit — the machine
18
+ * lowering a bar it failed to clear. That channel is never auto-ratified; it
19
+ * routes to an independent review session (`review_dispose`). Everything here
20
+ * turns on that one distinction.
21
+ *
22
+ * FAIL-CLOSED BY CONSTRUCTION. Safety is an ALLOWLIST, not a denylist: a
23
+ * proposal is auto-ratified only when it affirmatively matches a sanctioned
24
+ * shape. Unknown kinds, malformed metadata, and internally inconsistent rows
25
+ * all `hold` — they stay `proposed` and a human sees them. A new proposal_kind
26
+ * added upstream therefore defaults to `hold` until someone deliberately adds
27
+ * it to SAFE_OUTWARD_KINDS. That default is the point; do not replace the
28
+ * allowlist with a denylist.
29
+ *
30
+ * @module drift-ratify-policy
31
+ */
32
+ /**
33
+ * Every kind the DB CHECK admits (migration 20260510162518:17) plus
34
+ * `demote_de_to_ude`, which the edge validator accepts but the CHECK rejects.
35
+ * Listed here so it classifies as a KNOWN kind that is nonetheless not
36
+ * auto-ratifiable, rather than falling through as "unknown".
37
+ */
38
+ const KNOWN_PROPOSAL_KINDS = new Set([
39
+ 'update_statement',
40
+ 'add_node',
41
+ 'retire_node',
42
+ 'change_node_type',
43
+ 'flip_ude_to_de',
44
+ 'demote_de_to_ude',
45
+ ]);
46
+ /**
47
+ * Outward kinds the daemon may ratify unattended.
48
+ *
49
+ * `demote_de_to_ude` is deliberately EXCLUDED: realign-apply.ts documents it as
50
+ * human/agent-triggered only — the audit/propose phase never emits it — so an
51
+ * outward one is unexplained provenance, exactly the shape that must reach a
52
+ * human. Adding a kind here is a deliberate act of sanctioning it.
53
+ */
54
+ const SAFE_OUTWARD_KINDS = new Set([
55
+ 'update_statement',
56
+ 'add_node',
57
+ 'retire_node',
58
+ 'change_node_type',
59
+ 'flip_ude_to_de',
60
+ ]);
61
+ /** The only kind negative-branch.ts emits (negative-branch.ts:295-307). */
62
+ const NEGATIVE_BRANCH_KIND = 'add_node';
63
+ function classified(disposition, reason) {
64
+ return { disposition, reason };
65
+ }
66
+ /**
67
+ * True only for a plain JSON object. Arrays and null are NOT metadata bags:
68
+ * `typeof null === 'object'` and `typeof [] === 'object'`, so both need an
69
+ * explicit rejection here.
70
+ */
71
+ function isMetadataBag(value) {
72
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
73
+ }
74
+ /**
75
+ * Read a flag that the emitters only ever write as the literal `true`.
76
+ *
77
+ * Returns `undefined` for absent, `true`/`false` for a real boolean, and
78
+ * `'invalid'` for anything else. A truthy non-boolean (`"yes"`, `1`) is NOT
79
+ * silently coerced — coercion is how a malformed row sneaks into the
80
+ * auto-ratify path, and that is the failure this whole module exists to make
81
+ * impossible.
82
+ */
83
+ function readStrictFlag(bag, key) {
84
+ if (!(key in bag))
85
+ return undefined;
86
+ const value = bag[key];
87
+ if (value === undefined)
88
+ return undefined;
89
+ if (typeof value === 'boolean')
90
+ return value;
91
+ return 'invalid';
92
+ }
93
+ /**
94
+ * Decide the disposition a drift proposal is owed.
95
+ *
96
+ * Precedence is load-bearing and ordered most-specific first:
97
+ * 1. unknown/absent kind -> hold
98
+ * 2. metadata present but not an object -> hold
99
+ * 3. a flag present with a non-boolean -> hold
100
+ * 4. inward:true + shortfall -> review_dispose <- the bar-lowering channel
101
+ * inward:true + legitimate_divergence -> auto_ratify
102
+ * inward:true + anything else -> hold
103
+ * 5. isNegativeBranch:true on add_node -> auto_ratify
104
+ * isNegativeBranch:true on other kinds -> hold (inconsistent provenance)
105
+ * 6. outward + kind in SAFE_OUTWARD_KINDS -> auto_ratify
106
+ * outward + known-but-unsanctioned -> hold
107
+ *
108
+ * Absent metadata means outward BY CONSTRUCTION, not by assumption:
109
+ * `detectInwardDrift` hardcodes `inward: true` (reality-writeback.ts:390) and
110
+ * `proposeNegativeBranchesForInjection` hardcodes `isNegativeBranch: true`
111
+ * (negative-branch.ts:305). Neither flag can be missing from a row that needs
112
+ * it, so absence of both is a sound outward signal.
113
+ *
114
+ * Pure. Total: every input yields a classification; nothing throws.
115
+ */
116
+ export function classifyDriftProposal(input) {
117
+ const { proposalKind, proposedMetadata } = input;
118
+ // 1. A kind we cannot reason about is not a kind we may ratify.
119
+ if (typeof proposalKind !== 'string' || !KNOWN_PROPOSAL_KINDS.has(proposalKind)) {
120
+ return classified('hold', 'unknown_proposal_kind');
121
+ }
122
+ // Null/absent metadata is legal — an outward audit proposal need not carry a bag.
123
+ const hasMetadata = proposedMetadata !== null && proposedMetadata !== undefined;
124
+ if (hasMetadata && !isMetadataBag(proposedMetadata)) {
125
+ // 2. A string/number/array in the metadata column is a corrupt row.
126
+ return classified('hold', 'malformed_metadata');
127
+ }
128
+ const bag = hasMetadata
129
+ ? proposedMetadata
130
+ : {};
131
+ const inward = readStrictFlag(bag, 'inward');
132
+ const isNegativeBranch = readStrictFlag(bag, 'isNegativeBranch');
133
+ // 3. A flag written as a non-boolean means the emitter contract was violated.
134
+ if (inward === 'invalid' || isNegativeBranch === 'invalid') {
135
+ return classified('hold', 'malformed_metadata');
136
+ }
137
+ // 4. The inward channel: reality contradicted a claim the tree made.
138
+ if (inward === true) {
139
+ const classification = bag['verifyClassification'];
140
+ if (classification === 'shortfall') {
141
+ // NEVER auto-ratified. Ratifying this would rewrite a claim our own work
142
+ // failed to meet — the machine grading its own homework downward.
143
+ return classified('review_dispose', 'inward_shortfall');
144
+ }
145
+ if (classification === 'legitimate_divergence') {
146
+ // The work landed; reality just took a different shape than declared.
147
+ // Recording that more accurately raises fidelity, it does not lower a bar.
148
+ return classified('auto_ratify', 'inward_legitimate_divergence');
149
+ }
150
+ // 'match' never produces a proposal (reality-writeback.ts:370), so seeing it
151
+ // here — or seeing anything unrecognized — means the row disagrees with the
152
+ // detector that supposedly made it. Hold.
153
+ return classified('hold', 'inward_unclassified');
154
+ }
155
+ // 5. Negative branches: an injection introduced a new UDE. Additive, and the
156
+ // emitter only ever pairs the flag with add_node.
157
+ if (isNegativeBranch === true) {
158
+ if (proposalKind !== NEGATIVE_BRANCH_KIND) {
159
+ return classified('hold', 'inconsistent_negative_branch');
160
+ }
161
+ return classified('auto_ratify', 'negative_branch');
162
+ }
163
+ // 6. Outward audit drift: the tree lagging observed reality, no self-grading
164
+ // involved. Safe when the kind is one the audit phase is sanctioned to emit.
165
+ if (SAFE_OUTWARD_KINDS.has(proposalKind)) {
166
+ return classified('auto_ratify', 'outward_audit_drift');
167
+ }
168
+ return classified('hold', 'kind_not_auto_ratifiable');
169
+ }
170
+ /** Convenience predicate for the tick's filter step. */
171
+ export function isAutoRatifiable(input) {
172
+ return classifyDriftProposal(input).disposition === 'auto_ratify';
173
+ }
174
+ /** Convenience predicate: does this proposal owe a review-session disposition? */
175
+ export function requiresReviewDisposition(input) {
176
+ return classifyDriftProposal(input).disposition === 'review_dispose';
177
+ }
178
+ //# sourceMappingURL=drift-ratify-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-ratify-policy.js","sourceRoot":"","sources":["../src/drift-ratify-policy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"focus-loop-registry.d.ts","sourceRoot":"","sources":["../src/focus-loop-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmB/C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9D;AAED,eAAO,MAAM,aAAa,EAAE,cAAc,EAgWzC,CAAC"}
1
+ {"version":3,"file":"focus-loop-registry.d.ts","sourceRoot":"","sources":["../src/focus-loop-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqB/C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAC;IAC5C,kFAAkF;IAClF,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9D;AAED,eAAO,MAAM,aAAa,EAAE,cAAc,EAmZzC,CAAC"}
@@ -22,6 +22,8 @@ import { runCascadeProseTick, runNegativeBranchTick } from './cascade-restatemen
22
22
  import { runPrdControllerTickAll } from './prd/index.js';
23
23
  import { runMergeBackTick } from './merge-back-loop.js';
24
24
  import { runDriftEvalTick, runPendingDriftEvalRequestsTick } from './drift-eval-loop.js';
25
+ import { runDriftRatifyTick } from './drift-ratify-loop.js';
26
+ import { runShortfallDispositionTick } from './shortfall-disposition-loop.js';
25
27
  import { runSensorSweepTick } from './sensor-sweep.js';
26
28
  import { runCiSensorTick } from './ci-sensor-loop.js';
27
29
  import { reconcileDaemonProducts, buildReconcileDeps } from './config-reconcile.js';
@@ -210,6 +212,53 @@ export const LOOP_REGISTRY = [
210
212
  }, 30_000, 'drift-eval-requests', { skipIfRunning: true }));
211
213
  },
212
214
  },
215
+ // 8b. Drift auto-ratification loop (60 seconds). Ratifies the safe majority
216
+ // of the drift stream (per drift-ratify-policy.ts) with a system actor so
217
+ // the tree tracks observed reality at machine speed instead of pooling in
218
+ // `proposed`. Inward shortfalls and anything unclassifiable are left
219
+ // untouched. Cadence is tight because the whole point is that the queue
220
+ // never pools beyond the current tick; the work per tick is one list plus
221
+ // one ratify per safe proposal.
222
+ {
223
+ guard: 'TELORA_DRIFT_RATIFY_LOOP',
224
+ announce: {
225
+ enabled: 'Drift auto-ratify loop tick: enabled (set TELORA_DRIFT_RATIFY_LOOP=0 to disable)',
226
+ disabled: 'Drift auto-ratify loop tick: disabled (TELORA_DRIFT_RATIFY_LOOP=0)',
227
+ },
228
+ register(engine, config) {
229
+ engine.intervals.push(safeInterval(async () => {
230
+ try {
231
+ await runDriftRatifyTick(config);
232
+ }
233
+ catch (err) {
234
+ log.warn('[drift-ratify-loop] tick failed:', err.message);
235
+ }
236
+ }, 60_000, 'drift-ratify-loop', { skipIfRunning: true }));
237
+ },
238
+ },
239
+ // 8c. Scoped shortfall-disposition pass (5 minutes). A focus carrying an
240
+ // undisposed shortfall cannot converge -- the completion gate withholds
241
+ // done. This arms a one-shot pass whose only mandate is disposing them, so
242
+ // the hold self-heals instead of wedging. Slower cadence than the ratify
243
+ // tick: arming spawns a team, so this is expensive work, and a held focus
244
+ // is not urgent by the second.
245
+ {
246
+ guard: 'TELORA_SHORTFALL_DISPOSITION_LOOP',
247
+ announce: {
248
+ enabled: 'Shortfall-disposition loop tick: enabled (set TELORA_SHORTFALL_DISPOSITION_LOOP=0 to disable)',
249
+ disabled: 'Shortfall-disposition loop tick: disabled (TELORA_SHORTFALL_DISPOSITION_LOOP=0)',
250
+ },
251
+ register(engine, config) {
252
+ engine.intervals.push(safeInterval(async () => {
253
+ try {
254
+ await runShortfallDispositionTick(config);
255
+ }
256
+ catch (err) {
257
+ log.warn('[shortfall-disposition] tick failed:', err.message);
258
+ }
259
+ }, 300_000, 'shortfall-disposition-loop', { skipIfRunning: true }));
260
+ },
261
+ },
213
262
  // 9. Artifact-health sensor sweep (30 minutes).
214
263
  {
215
264
  guard: 'TELORA_SENSOR_SWEEP_LOOP',
@@ -1 +1 @@
1
- {"version":3,"file":"focus-loop-registry.js","sourceRoot":"","sources":["../src/focus-loop-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-loop-registry.js","sourceRoot":"","sources":["../src/focus-loop-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"persona-sections.d.ts","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,EAAE,CAqBV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CA6EnF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CA6BxD;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CA8BtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAuDxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAqCV;AAMD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CA2EvE"}
1
+ {"version":3,"file":"persona-sections.d.ts","sourceRoot":"","sources":["../../src/prompt-sections/persona-sections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAC9C,oBAAoB,EAAE,MAAM,GAC3B,MAAM,EAAE,CAqBV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkHnF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CA6BxD;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CA8BtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,+BAA+B,IAAI,MAAM,CAuDxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,MAAM,EAAE,CAqCV;AAMD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,aAAa,GAAG,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CA2EvE"}