create-principles-disciple 1.140.0 → 1.141.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.
Files changed (110) hide show
  1. package/codex-adapter/dist/codec/input-decoder.js +4 -2
  2. package/codex-adapter/dist/pd-hook.js +46 -1
  3. package/codex-adapter/package.json +1 -1
  4. package/console/dist/server/config/pd-config-store.js +1 -1
  5. package/core/dist/host/host-adapter.d.ts +20 -0
  6. package/core/dist/host/host-adapter.d.ts.map +1 -1
  7. package/core/dist/host/host-adapter.js.map +1 -1
  8. package/core/dist/host/index.d.ts +1 -1
  9. package/core/dist/host/index.d.ts.map +1 -1
  10. package/core/dist/host/index.js.map +1 -1
  11. package/core/dist/index.d.ts +1 -1
  12. package/core/dist/index.d.ts.map +1 -1
  13. package/core/dist/runtime-v2/__tests__/append-event-log-line.test.d.ts +2 -0
  14. package/core/dist/runtime-v2/__tests__/append-event-log-line.test.d.ts.map +1 -0
  15. package/core/dist/runtime-v2/__tests__/append-event-log-line.test.js +47 -0
  16. package/core/dist/runtime-v2/__tests__/append-event-log-line.test.js.map +1 -0
  17. package/core/dist/runtime-v2/__tests__/event-types-runid.test.d.ts +2 -0
  18. package/core/dist/runtime-v2/__tests__/event-types-runid.test.d.ts.map +1 -0
  19. package/core/dist/runtime-v2/__tests__/event-types-runid.test.js +28 -0
  20. package/core/dist/runtime-v2/__tests__/event-types-runid.test.js.map +1 -0
  21. package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +0 -1
  22. package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
  23. package/core/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js +31 -133
  24. package/core/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js.map +1 -1
  25. package/core/dist/runtime-v2/config/index.d.ts +1 -1
  26. package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
  27. package/core/dist/runtime-v2/config/index.js.map +1 -1
  28. package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
  29. package/core/dist/runtime-v2/config/pd-config-defaults.js +0 -5
  30. package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
  31. package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
  32. package/core/dist/runtime-v2/config/pd-config-effective.js +0 -5
  33. package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
  34. package/core/dist/runtime-v2/config/pd-config-types.d.ts +2 -11
  35. package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
  36. package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
  37. package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
  38. package/core/dist/runtime-v2/config/pd-config-validate.js +16 -46
  39. package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
  40. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js +338 -1
  41. package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js.map +1 -1
  42. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts +1 -1
  43. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
  44. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +7 -2
  45. package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
  46. package/core/dist/runtime-v2/index.d.ts +1 -1
  47. package/core/dist/runtime-v2/index.d.ts.map +1 -1
  48. package/core/dist/runtime-v2/index.js +1 -1
  49. package/core/dist/runtime-v2/index.js.map +1 -1
  50. package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js +0 -2
  51. package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js.map +1 -1
  52. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +0 -3
  53. package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
  54. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +0 -1
  55. package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -1
  56. package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.d.ts +2 -0
  57. package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.d.ts.map +1 -0
  58. package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.js +247 -0
  59. package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.js.map +1 -0
  60. package/core/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js +0 -1
  61. package/core/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js.map +1 -1
  62. package/core/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js +0 -1
  63. package/core/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js.map +1 -1
  64. package/core/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js +5 -5
  65. package/core/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js.map +1 -1
  66. package/core/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js +0 -1
  67. package/core/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js.map +1 -1
  68. package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
  69. package/core/dist/runtime-v2/internalization/evaluator-runner.js +57 -1
  70. package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
  71. package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts +7 -0
  72. package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
  73. package/core/dist/runtime-v2/internalization/internalization-orchestrator.js +43 -1
  74. package/core/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
  75. package/core/dist/runtime-v2/internalization/internalization-transition-decision.d.ts +9 -1
  76. package/core/dist/runtime-v2/internalization/internalization-transition-decision.d.ts.map +1 -1
  77. package/core/dist/runtime-v2/internalization/internalization-transition-decision.js +7 -2
  78. package/core/dist/runtime-v2/internalization/internalization-transition-decision.js.map +1 -1
  79. package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts +8 -0
  80. package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
  81. package/core/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
  82. package/core/dist/runtime-v2/pain-signal-observability.d.ts +13 -0
  83. package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
  84. package/core/dist/runtime-v2/pain-signal-observability.js +17 -0
  85. package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
  86. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-rate-limit-degradation.test.js +0 -1
  87. package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-rate-limit-degradation.test.js.map +1 -1
  88. package/core/dist/runtime-v2/types/event-types.d.ts +9 -0
  89. package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
  90. package/core/dist/runtime-v2/types/event-types.js +3 -0
  91. package/core/dist/runtime-v2/types/event-types.js.map +1 -1
  92. package/core/package.json +1 -1
  93. package/host-runtime/dist/index.d.ts +10 -1
  94. package/host-runtime/dist/index.js +39 -2
  95. package/host-runtime/dist/internalization-consumer-cycle.js +30 -2
  96. package/host-runtime/dist/pd-config.js +1 -1
  97. package/host-runtime/dist/production-pain-evidence.d.ts +2 -1
  98. package/host-runtime/dist/production-pain-evidence.js +34 -7
  99. package/host-runtime/package.json +1 -1
  100. package/package.json +2 -2
  101. package/pd-cli/dist/services/pd-config-loader.d.ts.map +1 -1
  102. package/pd-cli/dist/services/pd-config-loader.js +1 -0
  103. package/pd-cli/dist/services/pd-config-loader.js.map +1 -1
  104. package/plugin/dist/bundle.js +593 -580
  105. package/plugin/dist/governance-audit.js +116 -116
  106. package/plugin/dist/rulehost-evidence.js +133 -133
  107. package/plugin/dist/types.d.ts +1 -1
  108. package/plugin/openclaw.plugin.json +1 -1
  109. package/plugin/package.json +2 -2
  110. package/release-manager/package.json +2 -2
@@ -1,4 +1,6 @@
1
1
  import { describe, expect, it } from 'vitest';
2
+ import * as fsSync from 'fs';
3
+ import * as pathSync from 'path';
2
4
  import { DEFAULT_FEATURE_FLAGS } from '../feature-flag-contract.js';
3
5
  import { QUIET_FLAG_LIFECYCLE, } from '../feature-flag-lifecycle.js';
4
6
  /**
@@ -72,7 +74,7 @@ describe('PRI-610 feature flag lifecycle census', () => {
72
74
  }
73
75
  });
74
76
  it('legacy_retire category is a recognized, currently-empty transition state (documented semantics)', () => {
75
- // Category semantics (docs/governance/feature-flag-lifecycle-census.md):
77
+ // Category semantics (docs/process/feature-flag-lifecycle-census.md):
76
78
  // - gone = retired; can never be re-enabled; code deleted or inert.
77
79
  // - legacy_retire = deletion approved and scheduled; behaves like quiet
78
80
  // (config override still honored) until the code removal PR lands, then
@@ -80,4 +82,339 @@ describe('PRI-610 feature flag lifecycle census', () => {
80
82
  expect(legacyRetireFlags.length).toBe(0);
81
83
  });
82
84
  });
85
+ // ── PRI-779: Feature Flag Consumer Reality Guard ────────────────────────────
86
+ //
87
+ // PRI-769 §6 A1 / M2: census `consumers` claims were never machine-checked,
88
+ // which is how empathy_observer ("observer wiring" that never existed),
89
+ // painEvidenceAdmission (kill switch whose Gate A subject was deleted by a
90
+ // later refactor) and evolution_worker (flag outliving its deleted worker)
91
+ // stayed rotten until manual audit campaigns. Three guards close that gap:
92
+ //
93
+ // Guard 1 (path reality) — a census consumers entry that IS a bare path
94
+ // must resolve to a real file under
95
+ // packages/*/src or plugins/*/src.
96
+ // Guard 2 (zombie flags) — every quiet flag whose census decision is not
97
+ // STAGED must have at least one executable
98
+ // consumer read in production sources.
99
+ // Guard 3 (resurrection) — gone tombstones must have ZERO executable
100
+ // consumer reads; a runtime read of a retired
101
+ // flag fails CI.
102
+ //
103
+ // Scope notes:
104
+ // - Core flags are out of scope: they have no census rows and are
105
+ // Owner-approved by definition (AGENTS.md §5; PRI-769 §1.3).
106
+ // - "Executable read" is source-level (not AST): the flag id appears as a
107
+ // complete quoted string, or as a `.flagId` member access on any receiver —
108
+ // the read shapes observed across every currently-wired flag
109
+ // (isFeatureEnabled / loadFeatureFlagFromConfig / loadFeatureFlagFromWorkspace
110
+ // / resolveObserverConfig args, pdFlags.flags.x, ctx.featureFlags?.x,
111
+ // userFeatures.x). Dynamic `flags[variable]` dispatch and string-built ids
112
+ // are undetectable at this level and accepted as a known limit.
113
+ // - Comments, the registry module itself, the Console label map and
114
+ // enumLabel() display lookups never count as reads (census doc: label maps
115
+ // are display-only). Test files are excluded from the corpus.
116
+ const REPO_ROOT = pathSync.resolve(__dirname, '..', '..', '..', '..', '..', '..');
117
+ const CORPUS_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.cjs', '.mjs']);
118
+ const CORPUS_EXCLUDED_DIRS = new Set(['__tests__', 'tests', 'node_modules', 'dist']);
119
+ // Registry/self-reference layer: the flag module defines the ids, it never
120
+ // "consumes" them. The Console label map is display-only per the census doc.
121
+ const CORPUS_EXCLUDED_FRAGMENTS = ['packages/principles-core/src/runtime-v2/feature-flags/'];
122
+ const CORPUS_EXCLUDED_FILE_NAMES = new Set(['enum-labels.ts', 'enum-labels.tsx']);
123
+ function isTestLikePath(path) {
124
+ return /(^|\/)(__tests__|tests)\//.test(path) || /\.(test|spec)\.[cm]?[jt]sx?$/.test(path);
125
+ }
126
+ /** Single exclusion predicate shared by the real-repo walker AND the matcher,
127
+ * so fixtures and production scans classify paths identically. */
128
+ function isExcludedConsumerPath(path) {
129
+ if (isTestLikePath(path))
130
+ return true;
131
+ if (CORPUS_EXCLUDED_FRAGMENTS.some(fragment => path.includes(fragment)))
132
+ return true;
133
+ const fileName = path.split('/').pop() ?? '';
134
+ return CORPUS_EXCLUDED_FILE_NAMES.has(fileName);
135
+ }
136
+ function collectConsumerCorpus() {
137
+ const files = [];
138
+ const walk = (dir) => {
139
+ let entries;
140
+ try {
141
+ entries = fsSync.readdirSync(dir, { withFileTypes: true });
142
+ }
143
+ catch {
144
+ return; // unreadable directory: skipped, never silent for files we matched
145
+ }
146
+ for (const entry of entries) {
147
+ const fullPath = pathSync.join(dir, entry.name);
148
+ if (entry.isDirectory()) {
149
+ if (!CORPUS_EXCLUDED_DIRS.has(entry.name))
150
+ walk(fullPath);
151
+ continue;
152
+ }
153
+ if (!entry.isFile() || !CORPUS_EXTENSIONS.has(pathSync.extname(entry.name)))
154
+ continue;
155
+ const relPath = pathSync.relative(REPO_ROOT, fullPath).split(pathSync.sep).join('/');
156
+ if (isExcludedConsumerPath(relPath))
157
+ continue;
158
+ let content;
159
+ try {
160
+ content = fsSync.readFileSync(fullPath, 'utf8');
161
+ }
162
+ catch {
163
+ continue;
164
+ }
165
+ files.push({ path: relPath, content });
166
+ }
167
+ };
168
+ for (const rootDir of ['packages', 'plugins']) {
169
+ const root = pathSync.join(REPO_ROOT, rootDir);
170
+ if (fsSync.existsSync(root))
171
+ walk(root);
172
+ }
173
+ files.sort((a, b) => a.path.localeCompare(b.path));
174
+ return files;
175
+ }
176
+ let realCorpusCache = null;
177
+ function loadRealCorpus() {
178
+ if (!realCorpusCache)
179
+ realCorpusCache = collectConsumerCorpus();
180
+ return realCorpusCache;
181
+ }
182
+ // Display-layer label lookup (e.g. the empathy cost hint renders the retired
183
+ // id as a label): renders an id, never gates behavior.
184
+ const DISPLAY_LOOKUP_LINE = /\benumLabel\s*\(/;
185
+ function escapeRegExp(value) {
186
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
187
+ }
188
+ function flagReadPatterns(id) {
189
+ const quoted = escapeRegExp(id);
190
+ return [
191
+ // Quoted id: resolver/helper args (isFeatureEnabled(flags, 'id'),
192
+ // loadFeatureFlagFromConfig(dir, 'id', …), Object.hasOwn(flags, 'id')),
193
+ // and quoted flag-id constants.
194
+ new RegExp(`['"]${quoted}['"]`),
195
+ // Member access on any receiver: pdFlags.flags.gfi,
196
+ // ctx.featureFlags?.governance_experience_v1, userFeatures.diagnostician_split_pipeline.
197
+ // The lookbehind keeps import paths like './alpha_flag.js' out.
198
+ new RegExp(`(?<![/.])\\.${quoted}\\b`),
199
+ ];
200
+ }
201
+ /** Source-level comment stripping with cross-line block-comment state, so a
202
+ * quoted id inside a multi-line JSX/block comment never counts as a read.
203
+ * Naive by design: a string literal containing '//' or '/*' can truncate the
204
+ * code portion of its line — that only risks hiding a read (guard fails,
205
+ * human inspects), never inventing one. */
206
+ function stripComments(line, state) {
207
+ let code = '';
208
+ let index = 0;
209
+ while (index < line.length) {
210
+ if (state.inBlockComment) {
211
+ const end = line.indexOf('*/', index);
212
+ if (end === -1) {
213
+ index = line.length;
214
+ }
215
+ else {
216
+ state.inBlockComment = false;
217
+ index = end + 2;
218
+ }
219
+ continue;
220
+ }
221
+ const blockStart = line.indexOf('/*', index);
222
+ const lineStart = line.indexOf('//', index);
223
+ if (lineStart !== -1 && (blockStart === -1 || lineStart < blockStart)) {
224
+ code += line.slice(index, lineStart);
225
+ index = line.length;
226
+ }
227
+ else if (blockStart === -1) {
228
+ code += line.slice(index);
229
+ index = line.length;
230
+ }
231
+ else {
232
+ code += line.slice(index, blockStart);
233
+ state.inBlockComment = true;
234
+ index = blockStart + 2;
235
+ }
236
+ }
237
+ return code;
238
+ }
239
+ const MAX_MATCHES_PER_FLAG = 20;
240
+ function globToPathRegExp(pattern) {
241
+ const source = pattern
242
+ .split('**')
243
+ .map(part => part.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '[^/]*'))
244
+ .join('.*');
245
+ return new RegExp(`(?:^|/)${source}$`);
246
+ }
247
+ function findFlagReads(files, ids) {
248
+ const patterns = new Map(ids.map(id => [id, flagReadPatterns(id)]));
249
+ const reads = new Map(ids.map(id => [id, []]));
250
+ for (const file of files) {
251
+ if (isExcludedConsumerPath(file.path))
252
+ continue;
253
+ const commentState = { inBlockComment: false };
254
+ const lines = file.content.split('\n');
255
+ for (const [index, line] of lines.entries()) {
256
+ const code = stripComments(line, commentState);
257
+ const trimmed = code.trim();
258
+ if (trimmed.length === 0 || DISPLAY_LOOKUP_LINE.test(code))
259
+ continue;
260
+ for (const [id, regexes] of patterns) {
261
+ if (!regexes.some(regex => regex.test(code)))
262
+ continue;
263
+ const matches = reads.get(id);
264
+ if (matches && matches.length < MAX_MATCHES_PER_FLAG) {
265
+ matches.push({ path: file.path, line: index + 1, snippet: trimmed.slice(0, 160) });
266
+ }
267
+ }
268
+ }
269
+ }
270
+ return reads;
271
+ }
272
+ function formatMatches(matches) {
273
+ return matches
274
+ .slice(0, 5)
275
+ .map(match => `${match.path}:${match.line} — ${match.snippet}`)
276
+ .join('; ');
277
+ }
278
+ // PRI-779 minimal exemptions for Guard 3: exact-quoted gone ids that are
279
+ // validation/keyword metadata, not capability reads. Each entry needs a
280
+ // recorded reason; keep this list minimal.
281
+ const GONE_READ_EXEMPT_PATHS = new Set([
282
+ // MVP_GONE_FLAGS: installer --channels input validation rejects retired
283
+ // channel names; it validates user input, it never reads a flag.
284
+ 'packages/create-principles-disciple/src/mvp-config.ts',
285
+ // LEGACY_KEYWORDS: legacy channel-name text probe in the proven-channel
286
+ // baseline; keyword metadata, not a flag read.
287
+ 'packages/principles-core/src/runtime-v2/proven-channel-baseline.ts',
288
+ ]);
289
+ function quietFlagReadViolations(files, decisions) {
290
+ const ids = Object.keys(decisions);
291
+ const reads = findFlagReads(files, ids);
292
+ const violations = [];
293
+ for (const id of ids) {
294
+ if (decisions[id] === 'STAGED')
295
+ continue; // wiring deliberately pending (roadmap-owned)
296
+ const matches = reads.get(id) ?? [];
297
+ if (matches.length === 0) {
298
+ violations.push(`quiet flag '${id}' has no executable consumer read in production sources`
299
+ + ' — wire the consumer in the same PR, or mark the census entry STAGED with the roadmap issue that will wire it (PRI-769 §4.2)');
300
+ }
301
+ }
302
+ return violations;
303
+ }
304
+ function goneFlagReadViolations(files, ids) {
305
+ const reads = findFlagReads(files, ids);
306
+ const violations = [];
307
+ for (const id of ids) {
308
+ const matches = (reads.get(id) ?? []).filter(match => !GONE_READ_EXEMPT_PATHS.has(match.path));
309
+ if (matches.length > 0) {
310
+ violations.push(`gone flag '${id}' must have zero executable consumer reads (terminal tombstone) but is read at: ${formatMatches(matches)}`
311
+ + ' — remove the read, or re-register the capability through the census procedure if it is returning');
312
+ }
313
+ }
314
+ return violations;
315
+ }
316
+ /** Guard 1: a census consumers entry that is exactly one path-like token
317
+ * (contains '/' and no whitespace) must resolve to at least one real corpus
318
+ * file, with or without the packages/ or plugins/ prefix. Mixed prose
319
+ * entries carry no checkable path claim — their reality burden falls on
320
+ * Guard 2 (flag-level executable reads). */
321
+ function censusPathViolations(census, corpusPaths) {
322
+ const strippedPaths = corpusPaths.map(p => p.replace(/^(?:packages|plugins)\//, ''));
323
+ const violations = [];
324
+ for (const [id, entry] of Object.entries(census)) {
325
+ for (const consumer of entry.consumers) {
326
+ const token = consumer.trim();
327
+ if (/\s/.test(token) || !token.includes('/'))
328
+ continue;
329
+ const regex = globToPathRegExp(token);
330
+ const resolves = corpusPaths.some(p => regex.test(p)) || strippedPaths.some(p => regex.test(p));
331
+ if (!resolves) {
332
+ violations.push(`census consumers entry '${token}' (${id}) does not resolve to any file under packages/*/src or plugins/*/src`
333
+ + ' — update the census entry to the real current path (PRI-769 §5: consumers must be real paths)');
334
+ }
335
+ }
336
+ }
337
+ return violations;
338
+ }
339
+ describe('PRI-779 consumer reality guard — matcher units (synthetic fixtures)', () => {
340
+ const file = (path, content) => ({ path, content });
341
+ it('Case 1: quiet flag with a resolver read satisfies the zombie guard', () => {
342
+ const files = [file('packages/x/src/a.ts', "const on = isFeatureEnabled(flags, 'alpha_flag');\n")];
343
+ const violations = quietFlagReadViolations(files, { alpha_flag: 'KEEP_QUIET' });
344
+ expect(violations).toEqual([]);
345
+ });
346
+ it('Case 2: census consumer path that does not exist fails the path guard', () => {
347
+ const census = {
348
+ alpha_flag: { decision: 'KEEP_QUIET', consumers: ['packages/foo/not-exist.ts'] },
349
+ };
350
+ const violations = censusPathViolations(census, ['packages/x/src/a.ts']);
351
+ expect(violations.length).toBe(1);
352
+ expect(violations[0]).toContain('packages/foo/not-exist.ts');
353
+ });
354
+ it('Case 3: quiet flag with no executable read fails the zombie guard with an actionable message', () => {
355
+ const violations = quietFlagReadViolations([], { alpha_flag: 'KEEP_QUIET' });
356
+ expect(violations.length).toBe(1);
357
+ expect(violations[0]).toContain("'alpha_flag'");
358
+ });
359
+ it('Case 4: STAGED flag with no consumer is exempt from the zombie guard', () => {
360
+ const violations = quietFlagReadViolations([], { alpha_flag: 'STAGED' });
361
+ expect(violations).toEqual([]);
362
+ });
363
+ it('Case 5: a runtime read of a gone flag fails the resurrection guard', () => {
364
+ const files = [file('packages/x/src/a.ts', "return isFeatureEnabled(flags, 'retired_flag');\n")];
365
+ const violations = goneFlagReadViolations(files, ['retired_flag']);
366
+ expect(violations.length).toBe(1);
367
+ expect(violations[0]).toContain('packages/x/src/a.ts:1');
368
+ });
369
+ it('Case 6: display-layer, label-map, comment and test references never count as executable reads', () => {
370
+ const files = [
371
+ file('packages/x/src/a.test.ts', "const on = isFeatureEnabled(flags, 'alpha_flag');\n"),
372
+ file('packages/x/src/__tests__/b.ts', "const on = isFeatureEnabled(flags, 'alpha_flag');\n"),
373
+ file('packages/x/src/enum-labels.ts', " 'alpha_flag': '标签',\n"),
374
+ file('packages/x/src/c.tsx', "const label = enumLabel('featureId', 'alpha_flag', t);\n"),
375
+ file('packages/x/src/d.ts', "// the 'alpha_flag' flag was retired\n"),
376
+ file('packages/x/src/e.ts', ' * - feature flag alpha_flag off\n'),
377
+ // Multi-line JSX block comment (the empathy_observer ControlCenter case).
378
+ file('packages/x/src/h.tsx', "{/*\n 'alpha_flag' (snake_case) is the featureId used for display. */}\n"),
379
+ // Near-miss strings must not match: quoted id must be exact, not a prefix.
380
+ file('packages/x/src/f.ts', "reason: 'alpha_flag_disabled',\n"),
381
+ file('packages/x/src/g.ts', "track('alpha_flag_result', {}),\n"),
382
+ // Import path './alpha_flag.js' is not a member access on a receiver.
383
+ file('packages/x/src/i.ts', "import { x } from './alpha_flag.js';\n"),
384
+ ];
385
+ const violations = quietFlagReadViolations(files, { alpha_flag: 'KEEP_QUIET' });
386
+ expect(violations.length).toBe(1);
387
+ });
388
+ it('Guard 3 exemptions are file-scoped: exempt paths hide validation metadata only', () => {
389
+ const files = [file('packages/create-principles-disciple/src/mvp-config.ts', "const GONE = ['retired_flag'];\n")];
390
+ const violations = goneFlagReadViolations(files, ['retired_flag']);
391
+ expect(violations).toEqual([]);
392
+ });
393
+ });
394
+ describe('PRI-779 consumer reality guard — real sources', () => {
395
+ const corpus = loadRealCorpus();
396
+ const corpusPaths = corpus.map(f => f.path);
397
+ it('scanner sanity: the corpus walks real production sources (fail loud on empty scan)', () => {
398
+ expect(corpusPaths.length).toBeGreaterThan(500);
399
+ });
400
+ it('Guard 1: single-token census consumer paths resolve to real files', () => {
401
+ const violations = censusPathViolations(QUIET_FLAG_LIFECYCLE, corpusPaths);
402
+ expect(violations, violations.join('\n')).toEqual([]);
403
+ });
404
+ it('Guard 2: every non-STAGED quiet flag has at least one executable consumer read', () => {
405
+ const decisions = {};
406
+ for (const flag of quietFlags) {
407
+ const entry = QUIET_FLAG_LIFECYCLE[flag.id];
408
+ if (!entry)
409
+ throw new Error(`quiet flag '${flag.id}' has no census entry (PRI-610 test should have caught this)`);
410
+ decisions[flag.id] = entry.decision;
411
+ }
412
+ const violations = quietFlagReadViolations(corpus, decisions);
413
+ expect(violations, violations.join('\n')).toEqual([]);
414
+ });
415
+ it('Guard 3: gone tombstones have zero executable consumer reads', () => {
416
+ const violations = goneFlagReadViolations(corpus, goneFlags.map(f => f.id));
417
+ expect(violations, violations.join('\n')).toEqual([]);
418
+ });
419
+ });
83
420
  //# sourceMappingURL=feature-flag-lifecycle.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag-lifecycle.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-flag-lifecycle.test.js","sourceRoot":"","sources":["../../../../src/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@
17
17
  *
18
18
  * Adding a new quiet flag REQUIRES a lifecycle entry here stating:
19
19
  * Purpose / Default / Rollback / Graduation criteria / Retirement criteria /
20
- * Exit path (see docs/governance/feature-flag-lifecycle-census.md §New-flag rule).
20
+ * Exit path (see docs/process/feature-flag-lifecycle-census.md §New-flag rule).
21
21
  */
22
22
  export type QuietFlagLifecycleDecision = 'KEEP_QUIET' | 'GRADUATE' | 'RETIRE' | 'STAGED';
23
23
  export interface QuietFlagLifecycleEntry {
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,0BAA0B,CAAC;IACrC,iFAAiF;IACjF,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAoQlF,CAAC"}
1
+ {"version":3,"file":"feature-flag-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,MAAM,0BAA0B,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,0BAA0B,CAAC;IACrC,iFAAiF;IACjF,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAyQlF,CAAC"}
@@ -17,7 +17,7 @@
17
17
  *
18
18
  * Adding a new quiet flag REQUIRES a lifecycle entry here stating:
19
19
  * Purpose / Default / Rollback / Graduation criteria / Retirement criteria /
20
- * Exit path (see docs/governance/feature-flag-lifecycle-census.md §New-flag rule).
20
+ * Exit path (see docs/process/feature-flag-lifecycle-census.md §New-flag rule).
21
21
  */
22
22
  export const QUIET_FLAG_LIFECYCLE = {
23
23
  correction_observer: {
@@ -161,7 +161,12 @@ export const QUIET_FLAG_LIFECYCLE = {
161
161
  },
162
162
  evaluator_artificer_repair_loop: {
163
163
  decision: 'KEEP_QUIET',
164
- consumers: ['openclaw-plugin/src/service/auto-consume*', 'pd-cli rulehost-pipeline runner'],
164
+ // PRI-779 reality sync: the former 'openclaw-plugin/src/service/auto-consume*'
165
+ // glob no longer resolves (file renamed/moved). Verified executable reads
166
+ // (both `isFeatureEnabled(flags, 'evaluator_artificer_repair_loop')`):
167
+ // host-runtime/src/internalization-consumer-governance.ts:160 and
168
+ // pd-cli/src/services/rulehost-pipeline-runner.ts:693.
169
+ consumers: ['host-runtime/src/internalization-consumer-governance.ts', 'pd-cli/src/services/rulehost-pipeline-runner.ts'],
165
170
  evidence: 'PRI-509/P0-D repair loop; MVP_CORE_LOOP_CONTRACT INV-02 (needs_revision out-edge); production-wired since 2026-08-18; default-on',
166
171
  decided: '2026-08-27',
167
172
  graduationCriteria: 'INV-02 liveness depends on it — promotion to core warranted',
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flag-lifecycle.js","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-flag-lifecycle.js","sourceRoot":"","sources":["../../../src/runtime-v2/feature-flags/feature-flag-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -147,7 +147,7 @@ export type { PainIngressV1Payload, PainIngressOriginV1, PainIngressCorrelationV
147
147
  export { evaluatePainIngress, parsePainIngressReport, validateOriginCorrelationInvariant, SENTINEL_SESSION_IDS, isSentinelSessionId, } from './pain-ingress.js';
148
148
  export type { PainIngressReport, PainIngressDecision, LegacyPainSubmission, PainOrigin, PainCorrelation, IngressEvidenceEntry, PainEvidenceBundle, PainEvidenceUnavailableReason, PainIngressParseResult, } from './pain-ingress.js';
149
149
  /** @deprecated Internal implementation detail — observability is handled by PainToPrincipleService */
150
- export { recordPainSignalObservability } from './pain-signal-observability.js';
150
+ export { recordPainSignalObservability, appendEventLogLine } from './pain-signal-observability.js';
151
151
  export type { PainSignalObservabilityResult, RecordPainSignalObservabilityOptions } from './pain-signal-observability.js';
152
152
  export { sanitizeString, sanitizeValue, sanitizeToolParams, convergePath, MAX_EVIDENCE_VALUE_CHARS } from './evidence-sanitizer.js';
153
153
  /** @deprecated Internal factory — use PainToPrincipleService constructor instead */