redlinegate 0.0.1 → 0.0.2
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/README.md +22 -6
- package/dist/bin/redline.js +101 -11
- package/dist/bin/redline.js.map +1 -1
- package/dist/commands/init.js +94 -23
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/remove.js +3 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/verify.js +82 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/config/redline-json.js +45 -1
- package/dist/config/redline-json.js.map +1 -1
- package/dist/detect/existing.js +151 -0
- package/dist/detect/existing.js.map +1 -0
- package/dist/exempt/parse.js +8 -1
- package/dist/exempt/parse.js.map +1 -1
- package/dist/platforms/azure/install.js +8 -4
- package/dist/platforms/azure/install.js.map +1 -1
- package/dist/platforms/azure/verify.js +6 -0
- package/dist/platforms/azure/verify.js.map +1 -1
- package/dist/platforms/github/install.js +88 -10
- package/dist/platforms/github/install.js.map +1 -1
- package/dist/platforms/github/preflight.js +63 -0
- package/dist/platforms/github/preflight.js.map +1 -0
- package/dist/platforms/github/verify.js +62 -5
- package/dist/platforms/github/verify.js.map +1 -1
- package/dist/platforms/types.js +4 -0
- package/dist/platforms/types.js.map +1 -1
- package/dist/policy/diff.js +26 -9
- package/dist/policy/diff.js.map +1 -1
- package/dist/render/contexts.js +39 -0
- package/dist/render/contexts.js.map +1 -0
- package/dist/render/profile.js +44 -10
- package/dist/render/profile.js.map +1 -1
- package/dist/render/standards.js +2 -0
- package/dist/render/standards.js.map +1 -1
- package/dist/render/vendors.js +5 -1
- package/dist/render/vendors.js.map +1 -1
- package/dist/ui/facts.js +82 -0
- package/dist/ui/facts.js.map +1 -0
- package/dist/ui/prompt.js +201 -0
- package/dist/ui/prompt.js.map +1 -0
- package/dist/ui/tty.js +243 -0
- package/dist/ui/tty.js.map +1 -0
- package/dist/ui/wizard.js +179 -0
- package/dist/ui/wizard.js.map +1 -0
- package/package.json +10 -1
- package/platforms/azure/gate-template-github.yml +152 -0
- package/platforms/azure/gate-template.yml +59 -6
- package/scripts/check-pins.mjs +84 -1
- package/standards/contexts/speckit.md +22 -0
- package/standards/contexts/tmf.md +25 -0
- package/standards/manifest.json +1 -1
- package/templates/redline.yml +5 -9
- package/workflows/dashboard.yml +1 -1
- package/workflows/redline-collect.yml +1 -1
- package/workflows/redline-gate.yml +10 -3
- package/workflows/seed-canary.yml +2 -2
- package/workflows/weekly-digest.yml +1 -1
package/README.md
CHANGED
|
@@ -56,10 +56,26 @@ cd your-repo
|
|
|
56
56
|
npx redlinegate init
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
That is the whole procedure.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
That is the whole procedure. With no flags, at a terminal, it asks before it writes:
|
|
60
|
+
which standards apply, where the repository lives, what runs your pull request checks,
|
|
61
|
+
which assistants should read the rules, what to install, and how hard the gate should
|
|
62
|
+
bite. Whatever it detected is preselected, so pressing enter through it accepts detection,
|
|
63
|
+
and the last question offers **Dry run** before Apply.
|
|
64
|
+
|
|
65
|
+
Choose Apply and it renders the standards, installs the merge-readiness template and the
|
|
66
|
+
gate (advisory — it reports, it does not block), turns on the security floor, and opens a
|
|
67
|
+
pull request on `redline/onboard`. It never pushes to your default branch, so `git status`
|
|
68
|
+
stays clean. Anything that needed repository admin rights you do not have is listed at the
|
|
69
|
+
end for an administrator to run.
|
|
70
|
+
|
|
71
|
+
In CI, in a pipe, or with any flag present it prompts for nothing and takes the scripted
|
|
72
|
+
path — a prompt in a pipeline is a hang with nobody there to answer it:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
npx redlinegate init --dry-run # the plan; writes nothing, contacts no host
|
|
76
|
+
npx redlinegate init --profile web,infra # a React app with its own Terraform beside it
|
|
77
|
+
npx redlinegate init --pipeline azure-pipelines # on GitHub, but built by Azure Pipelines
|
|
78
|
+
```
|
|
63
79
|
|
|
64
80
|
Install it once and the everyday command is shorter:
|
|
65
81
|
|
|
@@ -123,8 +139,8 @@ Redline carries two versions that move independently. Do not conflate them.
|
|
|
123
139
|
|
|
124
140
|
| Axis | Lives in | Bumped by | Example |
|
|
125
141
|
| --- | --- | --- | --- |
|
|
126
|
-
| **CLI version** | `redlinegate` on npm (git `v*` tags) | semantic-release, from conventional commits on `main` | `0.0.
|
|
127
|
-
| **Standards version** | `standards/manifest.json` → `version` | A human, in the same PR as the rule change (see above) | `0.0.
|
|
142
|
+
| **CLI version** | `redlinegate` on npm (git `v*` tags) | semantic-release, from conventional commits on `main` | `0.0.2` |
|
|
143
|
+
| **Standards version** | `standards/manifest.json` → `version` | A human, in the same PR as the rule change (see above) | `0.0.2` |
|
|
128
144
|
|
|
129
145
|
The CLI version is the tool's release line: [CHANGELOG.md](CHANGELOG.md) tracks it, and
|
|
130
146
|
semantic-release computes the next one from commit messages — never edit
|
package/dist/bin/redline.js
CHANGED
|
@@ -9,6 +9,11 @@ import { isSeverity } from "../core/severity.js";
|
|
|
9
9
|
import { isRung, RUNGS } from "../enforce/ladder.js";
|
|
10
10
|
import { resolvePlatform as defaultResolvePlatform, } from "../platforms/resolve.js";
|
|
11
11
|
import { init, ONBOARD_BRANCH } from "../commands/init.js";
|
|
12
|
+
import { createGit } from "../core/git.js";
|
|
13
|
+
import { parseRemote } from "../platforms/detect.js";
|
|
14
|
+
import { Cancelled, createPrompter, isInteractive } from "../ui/prompt.js";
|
|
15
|
+
import { gatherFacts } from "../ui/facts.js";
|
|
16
|
+
import { runWizard } from "../ui/wizard.js";
|
|
12
17
|
import { capabilitySelection, OPTIONAL_CAPABILITIES, } from "../config/redline-json.js";
|
|
13
18
|
import { remove, REMOVE_BRANCH } from "../commands/remove.js";
|
|
14
19
|
import { createHostWithdrawal } from "../remove/host.js";
|
|
@@ -26,19 +31,29 @@ import { createSyncHost } from "../sync/host.js";
|
|
|
26
31
|
import { verifyRemote } from "../verify/remote.js";
|
|
27
32
|
import { createRemoteVerifyHost } from "../verify/host.js";
|
|
28
33
|
import { standardsVersion } from "../commands/sync.js";
|
|
34
|
+
import { isGatePipeline } from "../platforms/types.js";
|
|
29
35
|
const PACKAGE_ROOT = fileURLToPath(new URL('../../', import.meta.url));
|
|
30
36
|
const USAGE = [
|
|
31
37
|
'redline — engineering control plane',
|
|
32
38
|
'',
|
|
33
|
-
' redline init [--profile <
|
|
34
|
-
' [--adopt-caller] [--skip <list>] [--with <list>]',
|
|
39
|
+
' redline init [--profile <list>] [--vendors <list>] [--blocking] [--no-a11y] [--dry-run] [--repair]',
|
|
40
|
+
' [--adopt-caller] [--skip <list>] [--with <list>] [--pipeline <name>]',
|
|
35
41
|
' onboard this repository: standards, security floor, merge gate (advisory), registration',
|
|
36
42
|
' --dry-run print the plan; writes nothing, needs no credential, contacts no host',
|
|
43
|
+
' --profile <list> one profile, or several separated by commas, whose stacks are',
|
|
44
|
+
' rendered together — a React app with its own Terraform beside it is',
|
|
45
|
+
' web,infra. The recorded name is sorted, so the order you type cannot',
|
|
46
|
+
' change the artifacts. Omitted, the stack is detected from the checkout',
|
|
37
47
|
' --vendors <list> comma-separated vendor ids (copilot,agents,claude,cursor) to render for —',
|
|
38
48
|
' overrides both detection and whatever .redline.json already recorded; a vendor',
|
|
39
49
|
' the org has not enabled never renders no matter what this list names',
|
|
40
50
|
' --blocking promote the merge gate from advisory to blocking',
|
|
41
|
-
' --no-a11y
|
|
51
|
+
' --no-a11y recorded in .redline.json for a later phase; changes nothing in Phase 1',
|
|
52
|
+
' --speckit / --no-speckit, --tmf / --no-tmf the optional context sections rendered',
|
|
53
|
+
' into the standards artifacts beside the rules. speckit is on by default',
|
|
54
|
+
' and is dropped automatically where the repository already runs Spec Kit;',
|
|
55
|
+
' tmf is off unless asked for. Passing the negative on a later run removes',
|
|
56
|
+
' a section already rendered — the block is regenerated, not appended to',
|
|
42
57
|
' --repair re-apply every capability even if this repository looks already onboarded — for',
|
|
43
58
|
' labels, review-ownership, repo-property, gate and merge-policy, whose recorded',
|
|
44
59
|
' pendingAdmin entry a plain re-run can never clear on its own; composes with --dry-run',
|
|
@@ -52,6 +67,10 @@ const USAGE = [
|
|
|
52
67
|
` --rung <name> the enforcement rung: ${RUNGS.join(', ')}. A promotion needs recorded`,
|
|
53
68
|
' evidence and is refused without it; a demotion is always allowed. Omitting',
|
|
54
69
|
' the flag keeps whatever the repository already recorded',
|
|
70
|
+
' --pipeline <name> github-actions or azure-pipelines — what actually runs this',
|
|
71
|
+
' repository\'s pull request checks. Asked separately from the host because',
|
|
72
|
+
' the two come apart: a repository on GitHub can be built entirely by Azure',
|
|
73
|
+
' Pipelines, and installing an Actions workflow there gates nothing',
|
|
55
74
|
' --adopt-caller let Redline take over the gate machinery file (.github/workflows/redline.yml,',
|
|
56
75
|
' .azuredevops/redline-gate.yml) when what is already there carries nothing that',
|
|
57
76
|
' attributes it to Redline — a 2.1 caller, in practice. Without it the run refuses',
|
|
@@ -118,6 +137,24 @@ export async function run(argv, deps = {}) {
|
|
|
118
137
|
const cwd = deps.cwd ?? process.cwd();
|
|
119
138
|
const root = deps.root ?? PACKAGE_ROOT;
|
|
120
139
|
const log = createLog(deps.sink);
|
|
140
|
+
const interactive = deps.isInteractive ?? (() => isInteractive());
|
|
141
|
+
// The host is read from the git remote alone, with no credential and no
|
|
142
|
+
// request — the menu's first question has to render before either exists,
|
|
143
|
+
// because "Dry run" is one of its answers. A remote this cannot classify is
|
|
144
|
+
// `null`, which is exactly the case the host question is there to settle.
|
|
145
|
+
const detectHost = () => {
|
|
146
|
+
try {
|
|
147
|
+
return parseRemote(createGit(cwd).remoteUrl()).host;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const runInitWizard = async (dir, packageRoot) => {
|
|
154
|
+
const prompter = deps.prompter?.() ?? createPrompter();
|
|
155
|
+
const answers = await runWizard(prompter, gatherFacts({ cwd: dir, root: packageRoot, detectedHost: detectHost() }));
|
|
156
|
+
return { answers };
|
|
157
|
+
};
|
|
121
158
|
const resolve = deps.resolvePlatform ??
|
|
122
159
|
((dir, options) => defaultResolvePlatform(dir, options));
|
|
123
160
|
const [command, ...rest] = argv;
|
|
@@ -144,15 +181,25 @@ export async function run(argv, deps = {}) {
|
|
|
144
181
|
blocking: { type: 'boolean' },
|
|
145
182
|
'no-a11y': { type: 'boolean' },
|
|
146
183
|
speckit: { type: 'boolean' },
|
|
184
|
+
'no-speckit': { type: 'boolean' },
|
|
185
|
+
tmf: { type: 'boolean' },
|
|
186
|
+
'no-tmf': { type: 'boolean' },
|
|
147
187
|
'dry-run': { type: 'boolean' },
|
|
148
188
|
repair: { type: 'boolean' },
|
|
149
189
|
'adopt-caller': { type: 'boolean' },
|
|
150
190
|
skip: { type: 'string' },
|
|
151
191
|
with: { type: 'string' },
|
|
152
192
|
rung: { type: 'string' },
|
|
193
|
+
pipeline: { type: 'string' },
|
|
153
194
|
},
|
|
154
195
|
allowPositionals: false,
|
|
155
196
|
}));
|
|
197
|
+
// `redline init` with nothing after it, at a terminal, is a person asking
|
|
198
|
+
// to be walked through onboarding — so walk them through it. Any flag at
|
|
199
|
+
// all means the caller has already decided, and the menu would be in the
|
|
200
|
+
// way; CI and pipes never see it (isInteractive), so the scripted path is
|
|
201
|
+
// byte-identical to what it was before the menu existed.
|
|
202
|
+
const wizard = rest.length === 0 && interactive() ? await runInitWizard(cwd, root) : null;
|
|
156
203
|
const names = (list) => list === undefined
|
|
157
204
|
? []
|
|
158
205
|
: list
|
|
@@ -161,7 +208,14 @@ export async function run(argv, deps = {}) {
|
|
|
161
208
|
.filter((name) => name !== '');
|
|
162
209
|
// Throws a usage RedlineError on an unknown or non-optional name, before
|
|
163
210
|
// a platform is resolved or a byte is written.
|
|
164
|
-
|
|
211
|
+
//
|
|
212
|
+
// The menu answers arrive here as the same two lists the flags produce,
|
|
213
|
+
// rather than as a parallel set of options: a capability the operator
|
|
214
|
+
// deselected in the wizard is a `--skip`, and there is exactly one place
|
|
215
|
+
// that decides what a skip means.
|
|
216
|
+
const selection = wizard
|
|
217
|
+
? capabilitySelection(OPTIONAL_CAPABILITIES.filter((name) => !wizard.answers.capabilities.includes(name)), [...wizard.answers.capabilities])
|
|
218
|
+
: capabilitySelection(names(values.skip), names(values.with));
|
|
165
219
|
const menu = { ...selection.menu };
|
|
166
220
|
if (values.blocking !== undefined)
|
|
167
221
|
menu.blockingGate = values.blocking;
|
|
@@ -169,6 +223,16 @@ export async function run(argv, deps = {}) {
|
|
|
169
223
|
menu.accessibility = !values['no-a11y'];
|
|
170
224
|
if (values.speckit !== undefined)
|
|
171
225
|
menu.speckit = values.speckit;
|
|
226
|
+
if (values['no-speckit'] === true)
|
|
227
|
+
menu.speckit = false;
|
|
228
|
+
if (values.tmf !== undefined)
|
|
229
|
+
menu.tmf = values.tmf;
|
|
230
|
+
if (values['no-tmf'] === true)
|
|
231
|
+
menu.tmf = false;
|
|
232
|
+
if (wizard) {
|
|
233
|
+
menu.speckit = wizard.answers.speckit;
|
|
234
|
+
menu.tmf = wizard.answers.tmf;
|
|
235
|
+
}
|
|
172
236
|
// Same "no default" reasoning as the menu flags above: undefined is how
|
|
173
237
|
// init() tells "nothing typed, keep detection or the recorded
|
|
174
238
|
// selection" from "the caller typed an empty list".
|
|
@@ -181,22 +245,30 @@ export async function run(argv, deps = {}) {
|
|
|
181
245
|
if (values.rung !== undefined && !isRung(values.rung)) {
|
|
182
246
|
throw new RedlineError('usage', `--rung must be one of ${RUNGS.join(', ')}, not "${values.rung}"`, 'observe reports and blocks nothing; block-blocker stops a merge on a BLOCKER');
|
|
183
247
|
}
|
|
184
|
-
|
|
248
|
+
if (values.pipeline !== undefined && !isGatePipeline(values.pipeline)) {
|
|
249
|
+
throw new RedlineError('usage', `--pipeline must be github-actions or azure-pipelines, not "${values.pipeline}"`, 'a repository on GitHub whose pull request checks are Azure Pipelines wants azure-pipelines');
|
|
250
|
+
}
|
|
251
|
+
const pipelineChoice = wizard?.answers.pipeline ?? values.pipeline;
|
|
252
|
+
const dryRun = values['dry-run'] === true || wizard?.answers.action === 'dry-run';
|
|
185
253
|
const repair = values.repair === true;
|
|
186
254
|
const adoptCaller = values['adopt-caller'] === true;
|
|
187
255
|
// A dry run sends no request, so it must not require a credential —
|
|
188
256
|
// see ResolvePlatformOptions.lazyCredentials. Every other path here
|
|
189
257
|
// resolves one up front, exactly as before.
|
|
190
258
|
const platform = await resolve(cwd, dryRun ? { lazyCredentials: true } : {});
|
|
259
|
+
const profileChoice = wizard?.answers.profile ?? values.profile;
|
|
260
|
+
const vendorChoice = wizard ? [...wizard.answers.vendors] : vendors;
|
|
261
|
+
const rungChoice = wizard?.answers.rung ?? values.rung;
|
|
191
262
|
const report = await init(platform, {
|
|
192
263
|
cwd,
|
|
193
264
|
root,
|
|
194
|
-
...(
|
|
195
|
-
...(
|
|
265
|
+
...(profileChoice ? { profile: profileChoice } : {}),
|
|
266
|
+
...(vendorChoice ? { vendors: vendorChoice } : {}),
|
|
196
267
|
...(dryRun ? { dryRun: true } : {}),
|
|
197
268
|
...(repair ? { repair: true } : {}),
|
|
198
269
|
...(adoptCaller ? { adoptCaller: true } : {}),
|
|
199
|
-
...(
|
|
270
|
+
...(rungChoice ? { rung: rungChoice } : {}),
|
|
271
|
+
...(pipelineChoice ? { pipeline: pipelineChoice } : {}),
|
|
200
272
|
menu,
|
|
201
273
|
capabilities: selection.capabilities,
|
|
202
274
|
});
|
|
@@ -247,10 +319,21 @@ export async function run(argv, deps = {}) {
|
|
|
247
319
|
log.error(`could not open the pull request: ${report.pullRequestError}`, `the Redline changes are on branch ${ONBOARD_BRANCH} — push it if it is not already on origin, then open the pull request manually`);
|
|
248
320
|
return exitCodeFor('failed');
|
|
249
321
|
}
|
|
250
|
-
if (report.pullRequest)
|
|
322
|
+
if (report.pullRequest) {
|
|
251
323
|
log.info(`pull request: ${report.pullRequest.url}`);
|
|
252
|
-
|
|
253
|
-
|
|
324
|
+
// Onboarding commits to its own branch and pushes it, so the operator's
|
|
325
|
+
// working tree is untouched and `git status` is clean. Without this,
|
|
326
|
+
// the run looks like it did nothing: the first real onboarding ended
|
|
327
|
+
// with the operator running `init` a second time and being told
|
|
328
|
+
// "already onboarded" by a repository they believed was not.
|
|
329
|
+
log.info('');
|
|
330
|
+
log.info(`the changes are committed on ${ONBOARD_BRANCH} and pushed, not in your working`);
|
|
331
|
+
log.info('tree — `git status` here stays clean. Review and merge the pull request above.');
|
|
332
|
+
}
|
|
333
|
+
else if (report.alreadyOnboarded) {
|
|
334
|
+
log.info(`already onboarded — nothing to change (recorded in .redline.json; ` +
|
|
335
|
+
`re-run with --repair to re-apply every capability)`);
|
|
336
|
+
}
|
|
254
337
|
return 0;
|
|
255
338
|
}
|
|
256
339
|
if (command === 'remove') {
|
|
@@ -563,6 +646,13 @@ export async function run(argv, deps = {}) {
|
|
|
563
646
|
return exitCodeFor('usage');
|
|
564
647
|
}
|
|
565
648
|
catch (error) {
|
|
649
|
+
// Cancelling at a prompt is a decision, not a failure. It must not print an
|
|
650
|
+
// `error` line: an operator who pressed Ctrl-C already knows what happened,
|
|
651
|
+
// and a wrapping script reading exit 1 would file it as onboarding broken.
|
|
652
|
+
if (error instanceof Cancelled) {
|
|
653
|
+
log.info('cancelled — nothing was written');
|
|
654
|
+
return error.exitCode;
|
|
655
|
+
}
|
|
566
656
|
if (isRedlineError(error)) {
|
|
567
657
|
log.error(error.message, error.hint);
|
|
568
658
|
return error.exitCode;
|
package/dist/bin/redline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redline.js","sourceRoot":"","sources":["../../cli/bin/redline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"redline.js","sourceRoot":"","sources":["../../cli/bin/redline.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -3,22 +3,24 @@ import { join } from 'node:path';
|
|
|
3
3
|
import { isRedlineError, RedlineError } from "../core/errors.js";
|
|
4
4
|
import { CLI_VERSION } from "../core/version.js";
|
|
5
5
|
import { canPromote } from "../enforce/ladder.js";
|
|
6
|
-
import { CAPABILITY_KEYS, CONFIG_FILE, MENU_KEYS, deselectedCapabilities, labelsCarriedByGate, readConfig, writeConfig, } from "../config/redline-json.js";
|
|
6
|
+
import { CAPABILITY_KEYS, MENU_DEFAULTS, CONFIG_FILE, MENU_KEYS, deselectedCapabilities, labelsCarriedByGate, readConfig, writeConfig, } from "../config/redline-json.js";
|
|
7
7
|
import { proposeProfile } from "../detect/stack.js";
|
|
8
8
|
import { scanRepo } from "../detect/scan.js";
|
|
9
9
|
import { loadManifest } from "../render/manifest.js";
|
|
10
10
|
import { resolveProfile } from "../render/profile.js";
|
|
11
11
|
import { render } from "../render/standards.js";
|
|
12
12
|
import { renderCommands, COMMAND_HOSTS } from "../render/commands.js";
|
|
13
|
+
import { CONTEXTS, detectSpecKit } from "../render/contexts.js";
|
|
14
|
+
import { surveyRepo } from "../detect/existing.js";
|
|
13
15
|
import { LOCAL_RULES_FILE } from "../render/vendors.js";
|
|
14
16
|
import { isPending } from "../platforms/types.js";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
// What a repository gets when it says nothing. Every default here has to be
|
|
18
|
+
// safe on a repository nobody has looked at, because that is the one the
|
|
19
|
+
// command is usually run on.
|
|
20
|
+
// Re-exported from the config module, which owns them so the parser can fill a
|
|
21
|
+
// key a repository was onboarded before. See MENU_DEFAULTS there for what each
|
|
22
|
+
// default is and why.
|
|
23
|
+
export const DEFAULT_MENU = MENU_DEFAULTS;
|
|
22
24
|
// Named once so the label FLOOR_GATE soft-fails on and the label
|
|
23
25
|
// openPullRequest applies below share one literal instead of two that could
|
|
24
26
|
// drift apart, and so web/components/journey.tsx's hardcoded SYNC_LABEL can
|
|
@@ -172,7 +174,7 @@ const VENDOR_MARKERS = [
|
|
|
172
174
|
// org-enabled vendor) rather than an empty selection — that is the greenfield
|
|
173
175
|
// case the standard is written for, not a repository that opted out of all of
|
|
174
176
|
// them.
|
|
175
|
-
function detectVendors(cwd, orgDefault) {
|
|
177
|
+
export function detectVendors(cwd, orgDefault) {
|
|
176
178
|
const found = VENDOR_MARKERS.filter((marker) => marker.paths.some((relPath) => existsSync(join(cwd, relPath)))).map((marker) => marker.vendor);
|
|
177
179
|
return found.length > 0 ? found : orgDefault;
|
|
178
180
|
}
|
|
@@ -280,6 +282,7 @@ export async function init(platform, opts) {
|
|
|
280
282
|
const vendors = opts.vendors ?? existing?.vendors ?? detectVendors(cwd, orgVendors);
|
|
281
283
|
const gateOptions = {
|
|
282
284
|
...FLOOR_GATE,
|
|
285
|
+
...(opts.pipeline ? { pipeline: opts.pipeline } : {}),
|
|
283
286
|
...(menu.adrForLargeDiffs ? {} : { adrDiffThreshold: Number.MAX_SAFE_INTEGER }),
|
|
284
287
|
...(opts.adoptCaller === true ? { adoptCaller: true } : {}),
|
|
285
288
|
...(capabilities.labels ? {} : { manageLabels: false }),
|
|
@@ -351,9 +354,38 @@ export async function init(platform, opts) {
|
|
|
351
354
|
'it — the selection recorded in .redline.json is unchanged, and re-selecting the gate ' +
|
|
352
355
|
'brings them back');
|
|
353
356
|
}
|
|
357
|
+
// Spec Kit is a separate tool that scaffolds its own files and carries its own
|
|
358
|
+
// account of how the repository works. Where it is already installed, Redline
|
|
359
|
+
// drops its section rather than adding a second one beside it — and says so,
|
|
360
|
+
// because a context silently missing from the artifacts is indistinguishable
|
|
361
|
+
// from one that was never asked for.
|
|
362
|
+
const specKitAt = detectSpecKit(cwd);
|
|
363
|
+
if (specKitAt !== null && menu.speckit) {
|
|
364
|
+
menu.speckit = false;
|
|
365
|
+
notes.push(`this repository already runs Spec Kit (${specKitAt}), so Redline left the spec-driven ` +
|
|
366
|
+
'development context out rather than writing a second account of it beside the one Spec ' +
|
|
367
|
+
'Kit maintains — pass --speckit to include it anyway');
|
|
368
|
+
}
|
|
369
|
+
// The same courtesy Spec Kit gets, generalised to the rest of the toolchain.
|
|
370
|
+
// A repository with a mature pipeline already runs a scanner for most of what
|
|
371
|
+
// the gate would add; installing a second one beside it is not defence in
|
|
372
|
+
// depth, it is two sets of findings and two exemption paths for one problem.
|
|
373
|
+
// What Redline still brings such a repository is the part nothing else does —
|
|
374
|
+
// the standards the AI reviews against, and a check that they were applied —
|
|
375
|
+
// so detection narrows the gate rather than cancelling the onboarding.
|
|
376
|
+
const survey = surveyRepo(cwd);
|
|
377
|
+
for (const tool of survey.tools) {
|
|
378
|
+
const covers = tool.standsDown;
|
|
379
|
+
notes.push(covers === null
|
|
380
|
+
? `this repository already runs ${tool.label} (${tool.evidence}) — noted; Redline installs nothing that overlaps it`
|
|
381
|
+
: `this repository already runs ${tool.label} (${tool.evidence}), which covers what Redline's ` +
|
|
382
|
+
`own ${covers} check would report. Narrowing the gate to match is not wired yet, so for now ` +
|
|
383
|
+
`deselect it yourself with: redline init --skip gate`);
|
|
384
|
+
}
|
|
385
|
+
const contexts = CONTEXTS.filter((context) => menu[context.key]).map((context) => context.key);
|
|
354
386
|
// Files next, host settings after: a denied host call must never cost the
|
|
355
387
|
// file-level work that already succeeded.
|
|
356
|
-
const rendered = render({ root, profile, out: cwd, vendors, check: dryRun });
|
|
388
|
+
const rendered = render({ root, profile, out: cwd, vendors, contexts, check: dryRun });
|
|
357
389
|
// The ceiling render() applies internally, applied here too. renderCommands
|
|
358
390
|
// cannot enforce it for itself: COMMAND_HOSTS carries hosts the vendor
|
|
359
391
|
// manifest has no entry for at all (opencode), which is not the same thing
|
|
@@ -393,7 +425,11 @@ export async function init(platform, opts) {
|
|
|
393
425
|
// a selection this run was explicitly told to drop.
|
|
394
426
|
const vendorsChanged = existing !== null &&
|
|
395
427
|
(existing.vendors.length !== vendors.length ||
|
|
396
|
-
|
|
428
|
+
// `\0` as the escape, never a literal NUL byte. The byte itself made this
|
|
429
|
+
// file read as binary to grep and ripgrep, which then skipped it silently:
|
|
430
|
+
// a repository-wide search for any symbol in the largest command module
|
|
431
|
+
// returned nothing and reported no error.
|
|
432
|
+
[...existing.vendors].sort().join('\0') !== [...vendors].sort().join('\0'));
|
|
397
433
|
// Same shape again: deselecting a capability moves no file of its own, and
|
|
398
434
|
// swallowing it as "nothing to change" would leave .redline.json recording a
|
|
399
435
|
// capability the operator just switched off — with Redline still maintaining it.
|
|
@@ -556,7 +592,7 @@ export async function init(platform, opts) {
|
|
|
556
592
|
pullRequest = await platform.openPullRequest(ref, cwd, {
|
|
557
593
|
branch: ONBOARD_BRANCH,
|
|
558
594
|
title: `chore(redline): onboard to standards v${manifest.version}`,
|
|
559
|
-
body: onboardBody(profile, manifest.version, pendingAdmin),
|
|
595
|
+
body: onboardBody(profile, manifest.version, pendingAdmin, files, hostPlan, menu, notes),
|
|
560
596
|
labels: capabilities.labels ? [SYNC_LABEL] : [],
|
|
561
597
|
files,
|
|
562
598
|
});
|
|
@@ -594,22 +630,57 @@ export async function init(platform, opts) {
|
|
|
594
630
|
hostPlan,
|
|
595
631
|
};
|
|
596
632
|
}
|
|
597
|
-
|
|
633
|
+
// The pull request a team sees first, and usually the only thing they read
|
|
634
|
+
// before deciding whether this tool is worth having. It used to open with
|
|
635
|
+
// "Onboards this repository to Redline standards v0.0.3" — a sentence that
|
|
636
|
+
// means nothing to a reviewer who has not heard of Redline, followed by three
|
|
637
|
+
// paragraphs of Redline's own vocabulary and no statement of what changed in
|
|
638
|
+
// THEIR repository or what happens next. So: what it does, what it changed
|
|
639
|
+
// here, what the reviewer will notice, and how to switch any of it off.
|
|
640
|
+
function onboardBody(profile, version, pendingAdmin, files, hostPlan, menu, notes) {
|
|
641
|
+
const bullets = (items) => items.map((item) => `- \`${item}\``);
|
|
642
|
+
const gate = menu.blockingGate
|
|
643
|
+
? 'The gate **blocks** a merge that fails it.'
|
|
644
|
+
: 'The gate is **advisory**: it reports and does not block. Making it blocking is a separate, ' +
|
|
645
|
+
'deliberate step once you have watched it for a while.';
|
|
598
646
|
const pending = pendingAdmin.length === 0
|
|
599
|
-
?
|
|
600
|
-
:
|
|
601
|
-
|
|
647
|
+
? []
|
|
648
|
+
: [
|
|
649
|
+
'',
|
|
650
|
+
'## Needs an administrator',
|
|
651
|
+
'',
|
|
652
|
+
`These could not be applied with the permissions this run had: ${pendingAdmin.join(', ')}.`,
|
|
653
|
+
'Everything else is in place; re-run `redline init --repair` once they are granted.',
|
|
654
|
+
];
|
|
602
655
|
return [
|
|
603
|
-
|
|
656
|
+
'This adds an automated review standard to the repository: one versioned set of rules, rendered',
|
|
657
|
+
'into the files your coding assistants already read, plus a pull request check that applies them',
|
|
658
|
+
'to the diff.',
|
|
659
|
+
'',
|
|
660
|
+
`Detected stack: \`${profile}\`. Rules version: \`v${version}\`.`,
|
|
661
|
+
'',
|
|
662
|
+
'## What changed here',
|
|
663
|
+
'',
|
|
664
|
+
...(files.length === 0 ? ['No files changed.'] : bullets(files)),
|
|
665
|
+
...(hostPlan.length === 0 ? [] : ['', 'Repository settings:', '', ...hostPlan.map((h) => `- ${h}`)]),
|
|
666
|
+
'',
|
|
667
|
+
'## What you will notice',
|
|
668
|
+
'',
|
|
669
|
+
`- ${gate}`,
|
|
670
|
+
'- Your next pull request runs the Redline check and comments findings on the diff.',
|
|
671
|
+
'- Nothing outside the `<!-- REDLINE:BEGIN -->` markers was touched. Files you already had —',
|
|
672
|
+
' a pull request template, a CODEOWNERS — were left exactly as they are.',
|
|
604
673
|
'',
|
|
605
|
-
'
|
|
606
|
-
'deliberate second step after a soak period.',
|
|
674
|
+
'## Turning it down',
|
|
607
675
|
'',
|
|
608
|
-
'
|
|
609
|
-
'
|
|
610
|
-
'
|
|
676
|
+
'- A capability you already have your own version of: `redline init --skip <name>`.',
|
|
677
|
+
'- A rule that is wrong for this repository: raise it in the Redline repository rather than',
|
|
678
|
+
' editing the generated block here, so every repository gets the fix.',
|
|
679
|
+
'- All of it: `redline remove` takes back only what Redline can prove it wrote, as a pull request.',
|
|
611
680
|
'',
|
|
612
|
-
|
|
681
|
+
'`.redline.json` records every choice above and explains each one in its own `//` key.',
|
|
682
|
+
...(notes.length === 0 ? [] : ['', '## Worth knowing', '', ...notes.map((n) => `- ${n}`)]),
|
|
683
|
+
...pending,
|
|
613
684
|
].join('\n');
|
|
614
685
|
}
|
|
615
686
|
//# sourceMappingURL=init.js.map
|