Skip to content

Commit 9d02ddb

Browse files
V48 Gate 3 (specification-implementation): Rename to forcedInclusions and forcedExclusions
Replace sourcePathHints/protectedIpExclusions identifiers across deposit UI, API, pipeline steering, anchors, analytics, fixtures, and notes. Keep legacy POST/anchor key read fallbacks and leave option sourcePathRoots (covered paths) unchanged.
1 parent 44aca6a commit 9d02ddb

41 files changed

Lines changed: 252 additions & 221 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bitcode/v39-depository-supply-indexing.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
],
6060
"requiredEvidence": [
6161
"sourceSafeTextRoot",
62-
"sourcePathRoots",
62+
"forcedInclusionRoots",
6363
"symbolRoots",
6464
"constraintRoots"
6565
],

.bitcode/v43-deposit-route-options.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"repositoryFullName",
3131
"sourceBranch",
3232
"sourceCommit",
33-
"sourcePathRoots",
33+
"forcedInclusionRoots",
3434
"depositorInstructionRoot",
3535
"demandSignalRoots",
3636
"optionMeasurements",

BITCODE_V48_QA.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ Track 3-4 scripts (BTD ledger, settlement, pack journaling) get added when those
474474
Implementation plan step converged in ONE stitch cycle whose repair request carried
475475
the literal schema-validation error (vs the pre-fix five-cycles-to-death).
476476
- Defect: the selection model chose exactly the right context (deposit obfuscations/
477-
inventory/protectedIpExclusions/demandContext + mode) but emitted `deposit#obfuscations`
477+
inventory/forcedExclusions/demandContext + mode) but emitted `deposit#obfuscations`
478478
shorthand (`<namespace>#<key>`), while the resolver demanded the canonical
479479
`<execution-path>#<namespace>:<key>` — all five selected keys missed, `selectedContext`
480480
came back empty (fail-soft), and every downstream generation ran without its selected

packages/pipeline-hosts/src/__tests__/asset-pack-harness.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ describe('asset-pack sandbox harness plan', () => {
5252
synthesizeMode: 'deposit',
5353
depositSteering: {
5454
obfuscations: 'hide internal names',
55-
protectedIpExclusions: ['secret/'],
55+
forcedExclusions: ['secret/'],
5656
demandContext: ['auth'],
5757
},
5858
});
5959
expect(plan.manifest.synthesizeMode).toBe('deposit');
6060
expect(plan.manifest.depositSteering).toEqual({
6161
obfuscations: 'hide internal names',
62-
protectedIpExclusions: ['secret/'],
62+
forcedExclusions: ['secret/'],
6363
demandContext: ['auth'],
6464
});
6565
});

packages/pipeline-hosts/src/asset-pack-harness.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export interface BuildAssetPackSandboxHarnessOptions {
6767
/** Deposit steering for the in-box deposit synthesis (source-safe). */
6868
depositSteering?: {
6969
obfuscations?: string | null;
70-
protectedIpExclusions?: string[];
70+
forcedExclusions?: string[];
7171
demandContext?: string[];
7272
};
7373
/**
@@ -1830,7 +1830,7 @@ try {
18301830
harness: manifest,
18311831
synthesizeMode: manifest.synthesizeMode || 'read',
18321832
obfuscations: (manifest.depositSteering && manifest.depositSteering.obfuscations) || null,
1833-
protectedIpExclusions: (manifest.depositSteering && manifest.depositSteering.protectedIpExclusions) || [],
1833+
forcedExclusions: (manifest.depositSteering && manifest.depositSteering.forcedExclusions) || [],
18341834
demandContext: (manifest.depositSteering && manifest.depositSteering.demandContext) || [],
18351835
};
18361836

packages/pipeline-hosts/src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export interface PipelineHarnessManifest {
107107
/** Deposit steering for the in-box deposit synthesis (source-safe). */
108108
depositSteering?: {
109109
obfuscations?: string | null;
110-
protectedIpExclusions?: string[];
110+
forcedExclusions?: string[];
111111
demandContext?: string[];
112112
};
113113
host: Pick<

packages/pipelines/asset-pack/src/__tests__/agent-measure-absolutes.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ describe('validateDepositSynthesisOptions absolutes wiring', () => {
124124
const context = {
125125
lens: 'deposit' as const,
126126
inventoryPaths: ['src/auth.ts'],
127-
protectedIpExclusions: [],
127+
forcedExclusions: [],
128128
candidateKinds: ['capability-slice', 'implementation-pattern', 'proof-operations-slice'],
129129
};
130130

packages/pipelines/asset-pack/src/__tests__/asset-packs-synthesis.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
applyInventoryScope,
1212
isPathExcluded,
1313
isPathForcedIncluded,
14-
normalizeProtectedIpExclusions,
14+
normalizeForcedPathList,
1515
projectInventoryForPrompt,
1616
synthesizeAssetPackCandidates,
1717
validateDepositSynthesisOptions,
@@ -64,7 +64,7 @@ describe('AssetPacksSynthesis core', () => {
6464
});
6565

6666
it('normalizes exclusions and filters inventory fail-closed before inference', () => {
67-
const exclusions = normalizeProtectedIpExclusions('secret/\n\n secret/ ');
67+
const exclusions = normalizeForcedPathList('secret/\n\n secret/ ');
6868
expect(exclusions).toEqual(['secret/']);
6969

7070
const filtered = applyExclusionsToInventory(INVENTORY, exclusions);
@@ -137,7 +137,7 @@ describe('AssetPacksSynthesis core', () => {
137137
repositoryFullName: 'engineeredsoftware/demo-python',
138138
sourceBranch: 'main',
139139
sourceCommit: 'abc123',
140-
steering: { instructions: 'demo', protectedIpExclusions: [], demandContext: ['demand'] },
140+
steering: { instructions: 'demo', forcedExclusions: [], demandContext: ['demand'] },
141141
inventory: { ...INVENTORY, totalPathCount: 4, excludedPathCount: 0 },
142142
candidateKinds: ['capability-slice', 'implementation-pattern', 'proof-operations-slice'],
143143
});
@@ -166,7 +166,7 @@ describe('AssetPacksSynthesis core', () => {
166166
repositoryFullName: 'engineeredsoftware/demo-python',
167167
sourceBranch: 'main',
168168
sourceCommit: 'abc123',
169-
steering: { instructions: null, protectedIpExclusions: ['secret/'], demandContext: [] },
169+
steering: { instructions: null, forcedExclusions: ['secret/'], demandContext: [] },
170170
inventory: { ...INVENTORY, totalPathCount: 4, excludedPathCount: 0 },
171171
candidateKinds: ['capability-slice'],
172172
});
@@ -187,7 +187,7 @@ describe('AssetPacksSynthesis core', () => {
187187
repositoryFullName: 'engineeredsoftware/demo-python',
188188
sourceBranch: 'main',
189189
sourceCommit: 'abc123',
190-
steering: { instructions: null, protectedIpExclusions: ['secret/'], demandContext: [] },
190+
steering: { instructions: null, forcedExclusions: ['secret/'], demandContext: [] },
191191
inventory: { ...INVENTORY, totalPathCount: 4, excludedPathCount: 0 },
192192
candidateKinds: ['capability-slice'],
193193
}),
@@ -208,7 +208,7 @@ describe('deposit lens adapter', () => {
208208
repositoryFullName: 'engineeredsoftware/demo-python',
209209
sourceBranch: 'main',
210210
sourceCommit: 'abc123',
211-
steering: { instructions: 'demo', protectedIpExclusions: ['secret/'], demandContext: [] },
211+
steering: { instructions: 'demo', forcedExclusions: ['secret/'], demandContext: [] },
212212
inventory,
213213
candidateKinds: ['capability-slice'],
214214
});
@@ -219,7 +219,7 @@ describe('deposit lens adapter', () => {
219219
sourceBranch: 'main',
220220
sourceCommit: 'abc123',
221221
obfuscations: 'demo',
222-
protectedIpExclusions: ['secret/'],
222+
forcedExclusions: ['secret/'],
223223
createdAt: '2026-06-12T22:00:00.000Z',
224224
},
225225
result,
@@ -233,7 +233,7 @@ describe('deposit lens adapter', () => {
233233
expect(synthesis.optionCount).toBe(1);
234234
expect(synthesis.options[0].measurements.map((m) => m.volume)).toEqual([0.6, 0.7, 0.5]);
235235
expect(synthesis.options[0].roots.optionRoot).toMatch(/^deposit-asset-pack-option:[0-9a-f]{8}$/);
236-
expect(synthesis.exclusionPosture.protectedIpExclusionCount).toBe(1);
236+
expect(synthesis.exclusionPosture.forcedExclusionCount).toBe(1);
237237
expect(synthesis.exclusionPosture.excludedPathCount).toBe(1);
238238
expect(reviewProjections[0].coveredSourcePaths).toEqual(['README.md', 'src/app.py']);
239239
// The deposit-decision payload: provenant source becomes available to Bitcode.
@@ -289,7 +289,7 @@ describe('deposit lens adapter', () => {
289289
{
290290
lens: 'deposit',
291291
inventoryPaths: ['README.md', 'src/app.py'],
292-
protectedIpExclusions: [],
292+
forcedExclusions: [],
293293
candidateKinds: ['capability-slice'],
294294
},
295295
);

packages/pipelines/asset-pack/src/__tests__/deposit-agent-prompt-contracts.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ function seedDepositExecution(): Execution {
4848
sourceCommit: '31bbc0c5227b6b3aed5d107fd8507d35ec22970a',
4949
});
5050
exec.store('deposit', 'obfuscations', 'Withhold the payments engine internals.');
51-
exec.store('deposit', 'protectedIpExclusions', ['packages/payments/']);
51+
exec.store('deposit', 'forcedExclusions', ['packages/payments/']);
5252
exec.store('deposit', 'inventory', {
5353
paths: ['src/telemetry/index.ts', 'src/telemetry/stream.ts', 'src/index.ts'],
5454
samples: [{ path: 'src/telemetry/index.ts', excerpt: 'export const telemetry = {};' }],

packages/pipelines/asset-pack/src/__tests__/deposit-agent-store-contract.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ describe('deposit agent context/store contract', () => {
251251
{
252252
repository: REPOSITORY,
253253
inventory: INVENTORY,
254-
protectedIpExclusions: ['src/protected'],
254+
forcedExclusions: ['src/protected'],
255255
demandContext: ['session auth reads'],
256256
},
257257
divExec,
@@ -288,7 +288,7 @@ describe('deposit agent context/store contract', () => {
288288
// parent so sibling phase children resolve them via the upward walk.
289289
shared.store('deposit', 'repository', REPOSITORY);
290290
shared.store('deposit', 'obfuscations', 'obfuscations-marker: hide the signing keys');
291-
shared.store('deposit', 'protectedIpExclusions', ['src/protected/exclusion-marker.ts']);
291+
shared.store('deposit', 'forcedExclusions', ['src/protected/exclusion-marker.ts']);
292292
shared.store('deposit', 'inventory', INVENTORY);
293293
shared.store('deposit', 'demandContext', ['demand-marker: session auth reads']);
294294
shared.store('setup', 'inputComprehension', {
@@ -324,7 +324,7 @@ describe('deposit agent context/store contract', () => {
324324
const validationExec = shared.child('seq-2');
325325
const packs = [measuredPatchOption()];
326326
const result = await runDepositValidationAgent(
327-
{ assetPacks: packs, inventory: INVENTORY, protectedIpExclusions: [] },
327+
{ assetPacks: packs, inventory: INVENTORY, forcedExclusions: [] },
328328
validationExec,
329329
);
330330

@@ -380,7 +380,7 @@ describe('deposit agent context/store contract', () => {
380380
assetPacks: [violating],
381381
inventory: INVENTORY,
382382
obfuscationGuidance: { summary: 'withhold secrets', obfuscatedPaths: ['src/secret'] },
383-
protectedIpExclusions: [],
383+
forcedExclusions: [],
384384
},
385385
validationExec,
386386
);
@@ -402,7 +402,7 @@ describe('deposit agent context/store contract', () => {
402402
// on the SHARED parent, where every sibling phase child can findUp them.
403403
shared.store('implementation', 'options', packs);
404404
shared.store('deposit', 'inventory', INVENTORY);
405-
shared.store('deposit', 'protectedIpExclusions', []);
405+
shared.store('deposit', 'forcedExclusions', []);
406406
shared.store('setup', 'inputComprehension', { summary: 'no obfuscations', obfuscatedPaths: [] });
407407

408408
const validationChild = shared.child('seq-2').child('seq-0');

0 commit comments

Comments
 (0)