Change:
It's used in , this would be easiest after that's merged.
I wish instead of explicitly checking whether proposed API is enabled in in the implementation, we could check it when checking distro for whether an extension is allowed a proposal instead.
the list of allowed extensions is not available in code - oss though on local or in CI
That's fair but do we really need to check in code - oss when developing? I would think is being tested out in the final build that's published.
not my area but being strict is good for proposals and it's good to align oss with the product in areas like this. Consider a fork of VS Code that does not have the check, extensions could use the proposals without warning which could lead to easy breakages.

Discussion:
"workspaceTrust", "telemetry", "windowActivity", <del> "interactiveUserActions" </del> <ins> "interactiveUserActions", "envCollectionWorkspace", "envCollectionOptions" </ins> ], "private": true, "activationEvents": [],

import { Promises } from 'vs/base/common/async'; import { EditorGroupColumn } from 'vs/workbench/services/editor/common/editorGroupColumn'; import { ViewColumn } from 'vs/workbench/api/common/extHostTypeConverters'; <del> import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; </del> <ins> import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; </ins> export interface IExtHostTerminalService extends ExtHostTerminalServiceShape, IDisposable {

} getScopedEnvironmentVariableCollection(scope: vscode.EnvironmentVariableScope | undefined): IEnvironmentVariableCollection { <ins> if (this._extension && scope) { // TODO: This should be removed when the env var extension API(s) are stabilized checkProposedApiEnabled(this._extension, 'envCollectionWorkspace'); } </ins> const scopedCollectionKey = this.getScopeKey(scope); let scopedCollection = this.scopedCollections.get(scopedCollectionKey); if (!scopedCollection) {

replace(variable: string, value: string, options: vscode.EnvironmentVariableMutatorOptions | undefined, scope: vscode.EnvironmentVariableScope | undefined): void { if (this._extension && options) { <del> isProposedApiEnabled(this._extension, 'envCollectionOptions'); </del> <ins> checkProposedApiEnabled(this._extension, 'envCollectionOptions'); </ins> } this._setIfDiffers(variable, { value, type: EnvironmentVariableMutatorType.Replace, options: options ?? {}, scope }); } append(variable: string, value: string, options: vscode.EnvironmentVariableMutatorOptions | undefined, scope: vscode.EnvironmentVariableScope | undefined): void { if (this._extension && options) { <del> isProposedApiEnabled(this._extension, 'envCollectionOptions'); </del> <ins> checkProposedApiEnabled(this._extension, 'envCollectionOptions'); </ins> } this._setIfDiffers(variable, { value, type: EnvironmentVariableMutatorType.Append, options: options ?? {}, scope }); } prepend(variable: string, value: string, options: vscode.EnvironmentVariableMutatorOptions | undefined, scope: vscode.EnvironmentVariableScope | undefined): void { if (this._extension && options) { <del> isProposedApiEnabled(this._extension, 'envCollectionOptions'); </del> <ins> checkProposedApiEnabled(this._extension, 'envCollectionOptions'); </ins> } this._setIfDiffers(variable, { value, type: EnvironmentVariableMutatorType.Prepend, options: options ?? {}, scope }); }