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.
- package/codex-adapter/dist/codec/input-decoder.js +4 -2
- package/codex-adapter/dist/pd-hook.js +46 -1
- package/codex-adapter/package.json +1 -1
- package/console/dist/server/config/pd-config-store.js +1 -1
- package/core/dist/host/host-adapter.d.ts +20 -0
- package/core/dist/host/host-adapter.d.ts.map +1 -1
- package/core/dist/host/host-adapter.js.map +1 -1
- package/core/dist/host/index.d.ts +1 -1
- package/core/dist/host/index.d.ts.map +1 -1
- package/core/dist/host/index.js.map +1 -1
- package/core/dist/index.d.ts +1 -1
- package/core/dist/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/__tests__/append-event-log-line.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/append-event-log-line.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/append-event-log-line.test.js +47 -0
- package/core/dist/runtime-v2/__tests__/append-event-log-line.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/event-types-runid.test.d.ts +2 -0
- package/core/dist/runtime-v2/__tests__/event-types-runid.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/__tests__/event-types-runid.test.js +28 -0
- package/core/dist/runtime-v2/__tests__/event-types-runid.test.js.map +1 -0
- package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js +0 -1
- package/core/dist/runtime-v2/__tests__/pain-to-principle-service.test.js.map +1 -1
- package/core/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js +31 -133
- package/core/dist/runtime-v2/config/__tests__/pd-config-context-injection.test.js.map +1 -1
- package/core/dist/runtime-v2/config/index.d.ts +1 -1
- package/core/dist/runtime-v2/config/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/index.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js +0 -5
- package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-effective.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-effective.js +0 -5
- package/core/dist/runtime-v2/config/pd-config-effective.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.d.ts +2 -11
- package/core/dist/runtime-v2/config/pd-config-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-types.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-validate.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-validate.js +16 -46
- package/core/dist/runtime-v2/config/pd-config-validate.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js +338 -1
- package/core/dist/runtime-v2/feature-flags/__tests__/feature-flag-lifecycle.test.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +7 -2
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +1 -1
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +1 -1
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js +0 -2
- package/core/dist/runtime-v2/internalization/__tests__/artificer-output-retry-flag.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js +0 -3
- package/core/dist/runtime-v2/internalization/__tests__/diag-chain-e2e.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js +0 -1
- package/core/dist/runtime-v2/internalization/__tests__/diag-rootcause-intent-tension.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.d.ts +2 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.d.ts.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.js +247 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-approved-replay-failed-repair.test.js.map +1 -0
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js +0 -1
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-artificer-repair-replay.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js +0 -1
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-chinese-feedback-contract.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js +5 -5
- package/core/dist/runtime-v2/internalization/__tests__/evaluator-out-of-scope-governance.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js +0 -1
- package/core/dist/runtime-v2/internalization/__tests__/shared-information-plane-runner.test.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js +57 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts +7 -0
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.js +43 -1
- package/core/dist/runtime-v2/internalization/internalization-orchestrator.js.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-transition-decision.d.ts +9 -1
- package/core/dist/runtime-v2/internalization/internalization-transition-decision.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/internalization-transition-decision.js +7 -2
- package/core/dist/runtime-v2/internalization/internalization-transition-decision.js.map +1 -1
- package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts +8 -0
- package/core/dist/runtime-v2/internalization/pitask-metadata.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/pitask-metadata.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.d.ts +13 -0
- package/core/dist/runtime-v2/pain-signal-observability.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-observability.js +17 -0
- package/core/dist/runtime-v2/pain-signal-observability.js.map +1 -1
- package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-rate-limit-degradation.test.js +0 -1
- package/core/dist/runtime-v2/runner/__tests__/base-peer-runner-rate-limit-degradation.test.js.map +1 -1
- package/core/dist/runtime-v2/types/event-types.d.ts +9 -0
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +3 -0
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/package.json +1 -1
- package/host-runtime/dist/index.d.ts +10 -1
- package/host-runtime/dist/index.js +39 -2
- package/host-runtime/dist/internalization-consumer-cycle.js +30 -2
- package/host-runtime/dist/pd-config.js +1 -1
- package/host-runtime/dist/production-pain-evidence.d.ts +2 -1
- package/host-runtime/dist/production-pain-evidence.js +34 -7
- package/host-runtime/package.json +1 -1
- package/package.json +2 -2
- package/pd-cli/dist/services/pd-config-loader.d.ts.map +1 -1
- package/pd-cli/dist/services/pd-config-loader.js +1 -0
- package/pd-cli/dist/services/pd-config-loader.js.map +1 -1
- package/plugin/dist/bundle.js +593 -580
- package/plugin/dist/governance-audit.js +116 -116
- package/plugin/dist/rulehost-evidence.js +133 -133
- package/plugin/dist/types.d.ts +1 -1
- package/plugin/openclaw.plugin.json +1 -1
- package/plugin/package.json +2 -2
- 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/
|
|
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/
|
|
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,
|
|
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/
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAkBH,MAAM,CAAC,MAAM,oBAAoB,GAAsD;IACrF,mBAAmB,EAAE;QACnB,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,kDAAkD,EAAE,8BAA8B,CAAC;QAC/F,QAAQ,EAAE,+FAA+F;QACzG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,yFAAyF;QAC7G,kBAAkB,EAAE,4FAA4F;KACjH;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,0CAA0C,CAAC;QACvD,QAAQ,EAAE,gHAAgH;QAC1H,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,wFAAwF;QAC5G,kBAAkB,EAAE,oEAAoE;KACzF;IACD,6BAA6B,EAAE;QAC7B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,4DAA4D,EAAE,yCAAyC,EAAE,kFAAkF,CAAC;QACxM,QAAQ,EAAE,kUAAkU;QAC5U,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,qHAAqH;QACzI,kBAAkB,EAAE,oHAAoH;KACzI;IACD,2BAA2B,EAAE;QAC3B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,qDAAqD,CAAC;QAClE,QAAQ,EAAE,sFAAsF;QAChG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,sGAAsG;QAC1H,kBAAkB,EAAE,0EAA0E;KAC/F;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,+CAA+C,EAAE,wCAAwC,CAAC;QACtG,QAAQ,EAAE,wFAAwF;QAClG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,2GAA2G;QAC/H,kBAAkB,EAAE,4CAA4C;KACjE;IACD,sBAAsB,EAAE;QACtB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,gGAAgG,CAAC;QAC7G,QAAQ,EAAE,0ZAA0Z;QACpa,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,sHAAsH;QAC1I,kBAAkB,EAAE,gGAAgG;KACrH;IACD,+BAA+B,EAAE;QAC/B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,wEAAwE,CAAC;QACrF,QAAQ,EAAE,oiBAAoiB;QAC9iB,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,6LAA6L;QACjN,kBAAkB,EAAE,wHAAwH;KAC7I;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,4CAA4C,CAAC;QACzD,QAAQ,EAAE,sFAAsF;QAChG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,oEAAoE;QACxF,kBAAkB,EAAE,uGAAuG;KAC5H;IACD,6EAA6E;IAC7E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,+EAA+E;IAC/E,8EAA8E;IAC9E,0EAA0E;IAC1E,sFAAsF;IACtF,gFAAgF;IAChF,gFAAgF;IAChF,mDAAmD;IACnD,uBAAuB,EAAE;QACvB,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,oCAAoC,EAAE,uCAAuC,CAAC;QAC1F,QAAQ,EAAE,wFAAwF;QAClG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,+CAA+C;QACnE,kBAAkB,EAAE,uEAAuE;KAC5F;IACD,4BAA4B,EAAE;QAC5B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,0EAA0E,CAAC;QACvF,QAAQ,EAAE,wFAAwF;QAClG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,mDAAmD;QACvE,kBAAkB,EAAE,qCAAqC;KAC1D;IACD,4BAA4B,EAAE;QAC5B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,iCAAiC,EAAE,mCAAmC,CAAC;QACnF,QAAQ,EAAE,wFAAwF;QAClG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,qEAAqE;QACzF,kBAAkB,EAAE,gDAAgD;KACrE;IACD,6BAA6B,EAAE;QAC7B,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,CAAC,iCAAiC,EAAE,4CAA4C,CAAC;QAC5F,QAAQ,EAAE,sGAAsG;QAChH,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,8CAA8C;QAClE,kBAAkB,EAAE,mGAAmG;KACxH;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,wDAAwD,EAAE,mCAAmC,CAAC;QAC1G,QAAQ,EAAE,uGAAuG;QACjH,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,uEAAuE;QAC3F,kBAAkB,EAAE,mDAAmD;KACxE;IACD,kBAAkB,EAAE;QAClB,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,2CAA2C,EAAE,oDAAoD,CAAC;QAC9G,QAAQ,EAAE,kFAAkF;QAC5F,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,gEAAgE;QACpF,kBAAkB,EAAE,uCAAuC;KAC5D;IACD,mBAAmB,EAAE;QACnB,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,uCAAuC,EAAE,mCAAmC,CAAC;QACzF,QAAQ,EAAE,yGAAyG;QACnH,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,+HAA+H;QACnJ,kBAAkB,EAAE,kCAAkC;KACvD;IACD,0BAA0B,EAAE;QAC1B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,2CAA2C,EAAE,8BAA8B,CAAC;QACxF,QAAQ,EAAE,2FAA2F;QACrG,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,4DAA4D;QAChF,kBAAkB,EAAE,kEAAkE;KACvF;IACD,+BAA+B,EAAE;QAC/B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,
|
|
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 */
|