@codyswann/lisa 3.61.0 → 3.63.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/all/copy-overwrite/scripts/lisa-gates.mjs +167 -5
- package/all/copy-overwrite/scripts/lisa-reconcile-policy.mjs +325 -32
- package/dist/cli/gate-report-templates.js +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +6 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +14 -9
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/health/ruleset-inspection.d.ts.map +1 -1
- package/dist/health/ruleset-inspection.js +73 -6
- package/dist/health/ruleset-inspection.js.map +1 -1
- package/package.json +2 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-doctor/SKILL.md +46 -7
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-github-repo/SKILL.md +7 -3
- package/plugins/lisa/skills/lisa-doctor/SKILL.md +46 -7
- package/plugins/lisa/skills/lisa-setup-github-repo/SKILL.md +7 -3
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-doctor/SKILL.md +46 -7
- package/plugins/lisa-agy/skills/lisa-setup-github-repo/SKILL.md +7 -3
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/skills/lisa-doctor/SKILL.md +46 -7
- package/plugins/lisa-copilot/skills/lisa-setup-github-repo/SKILL.md +7 -3
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-doctor/SKILL.md +46 -7
- package/plugins/lisa-cursor/skills/lisa-setup-github-repo/SKILL.md +7 -3
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/skills/lisa-doctor/SKILL.md +46 -7
- package/plugins/src/base/skills/lisa-setup-github-repo/SKILL.md +7 -3
- package/scripts/check-required-check-promotions.mjs +69 -4
- package/scripts/lisa-github-repo-setup.sh +64 -5
- package/scripts/lisa-github-rulesets.sh +201 -21
- package/scripts/lisa-ruleset-payload.mjs +376 -0
- package/all/github-rulesets/base.json +0 -64
|
@@ -326,8 +326,33 @@ export const POLICY_SOURCES = Object.freeze({
|
|
|
326
326
|
surface: "repository",
|
|
327
327
|
field: "default_branch",
|
|
328
328
|
},
|
|
329
|
+
"review.required_approving_review_count": {
|
|
330
|
+
surface: "ruleset",
|
|
331
|
+
field: "required_approving_review_count",
|
|
332
|
+
},
|
|
333
|
+
"review.require_code_owner_review": {
|
|
334
|
+
surface: "ruleset",
|
|
335
|
+
field: "require_code_owner_review",
|
|
336
|
+
},
|
|
337
|
+
"ruleset.enforcement": { surface: "ruleset", field: "enforcement" },
|
|
338
|
+
"ruleset.include_refs": { surface: "ruleset", field: "include_refs" },
|
|
339
|
+
"ruleset.exclude_refs": { surface: "ruleset", field: "exclude_refs" },
|
|
340
|
+
"ruleset.bypass_actors": { surface: "ruleset", field: "bypass_actors" },
|
|
329
341
|
});
|
|
330
342
|
|
|
343
|
+
/**
|
|
344
|
+
* The ruleset whose SHAPE the `policy.ruleset` and `policy.review` blocks
|
|
345
|
+
* describe.
|
|
346
|
+
*
|
|
347
|
+
* The boolean signals below are an OR across every active ruleset, because
|
|
348
|
+
* "are force pushes refused anywhere" is the question those fields ask. The
|
|
349
|
+
* shape fields are not like that: a repository has several rulesets and each
|
|
350
|
+
* has its own `enforcement`, its own ref conditions and its own bypass list, so
|
|
351
|
+
* ORing them would compare a declaration against a value from whichever ruleset
|
|
352
|
+
* happened to sort first. These are read off the one ruleset Lisa generates.
|
|
353
|
+
*/
|
|
354
|
+
export const POLICY_RULESET_NAME = "base";
|
|
355
|
+
|
|
331
356
|
/**
|
|
332
357
|
* Run `gh` and report the outcome without throwing.
|
|
333
358
|
*
|
|
@@ -423,10 +448,18 @@ function ghJson(gh, args) {
|
|
|
423
448
|
* `force_push` reads `non_fast_forward` because that is the rule GitHub uses to
|
|
424
449
|
* mean "force pushes are refused"; the policy field states the protection, not
|
|
425
450
|
* the permission, so `true` means force pushing is blocked.
|
|
451
|
+
*
|
|
452
|
+
* The boolean signals are ORed across every ACTIVE ruleset. The shape fields —
|
|
453
|
+
* `enforcement`, the ref conditions, `bypass_actors`, the review counts — are
|
|
454
|
+
* read off `POLICY_RULESET_NAME` alone, and they are read whatever its
|
|
455
|
+
* enforcement is, because `enforcement` is itself one of the declared fields
|
|
456
|
+
* and skipping a non-active ruleset would report the one drift that matters
|
|
457
|
+
* most as no drift at all.
|
|
426
458
|
* @param {Ruleset[]} rulesets Full ruleset objects.
|
|
427
|
-
* @
|
|
459
|
+
* @param {string} [policyRuleset] Ruleset the shape fields are read from.
|
|
460
|
+
* @returns {Record<string, *>} Observed ruleset-surface policy.
|
|
428
461
|
*/
|
|
429
|
-
export function rulesetSignals(rulesets) {
|
|
462
|
+
export function rulesetSignals(rulesets, policyRuleset = POLICY_RULESET_NAME) {
|
|
430
463
|
const signals = {
|
|
431
464
|
linear: false,
|
|
432
465
|
signed_commits: false,
|
|
@@ -465,7 +498,35 @@ export function rulesetSignals(rulesets) {
|
|
|
465
498
|
}
|
|
466
499
|
}
|
|
467
500
|
}
|
|
468
|
-
return signals;
|
|
501
|
+
return { ...signals, ...rulesetShape(rulesets, policyRuleset) };
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* The per-ruleset shape fields, read off the policy ruleset.
|
|
506
|
+
*
|
|
507
|
+
* Every field is `undefined` when that ruleset does not exist, which is what
|
|
508
|
+
* makes "the ruleset Lisa generates is not on this repository" render as drift
|
|
509
|
+
* on each declared field rather than as a match against a fabricated default.
|
|
510
|
+
* @param {Ruleset[]} rulesets Full ruleset objects.
|
|
511
|
+
* @param {string} policyRuleset The ruleset to read.
|
|
512
|
+
* @returns {Record<string, *>} Observed shape.
|
|
513
|
+
*/
|
|
514
|
+
function rulesetShape(rulesets, policyRuleset) {
|
|
515
|
+
const target = (rulesets ?? []).find(entry => entry?.name === policyRuleset);
|
|
516
|
+
if (!target) return {};
|
|
517
|
+
const pullRequest = (target.rules ?? []).find(
|
|
518
|
+
rule => rule?.type === "pull_request"
|
|
519
|
+
);
|
|
520
|
+
return {
|
|
521
|
+
enforcement: target.enforcement,
|
|
522
|
+
include_refs: target.conditions?.ref_name?.include,
|
|
523
|
+
exclude_refs: target.conditions?.ref_name?.exclude,
|
|
524
|
+
bypass_actors: target.bypass_actors,
|
|
525
|
+
required_approving_review_count:
|
|
526
|
+
pullRequest?.parameters?.required_approving_review_count,
|
|
527
|
+
require_code_owner_review:
|
|
528
|
+
pullRequest?.parameters?.require_code_owner_review,
|
|
529
|
+
};
|
|
469
530
|
}
|
|
470
531
|
|
|
471
532
|
/**
|
|
@@ -600,13 +661,74 @@ export function reconcileSettings({ policy, live }) {
|
|
|
600
661
|
? live.settings?.[source.field]
|
|
601
662
|
: live.signals?.[source.field];
|
|
602
663
|
const finding = { path, declared, observed, ...source };
|
|
603
|
-
if (observed
|
|
664
|
+
if (sameDeclaredValue(observed, declared)) matched.push(finding);
|
|
604
665
|
else drift.push(finding);
|
|
605
666
|
}
|
|
606
667
|
}
|
|
607
668
|
return { drift, matched, unknown };
|
|
608
669
|
}
|
|
609
670
|
|
|
671
|
+
/**
|
|
672
|
+
* Whether an observed value satisfies a declared one.
|
|
673
|
+
*
|
|
674
|
+
* `===` was enough while every policy field was a boolean or a string. The
|
|
675
|
+
* ruleset shape moved into config carrying `include_refs` and `bypass_actors`,
|
|
676
|
+
* and two arrays with identical contents are never `===` — so a repository in
|
|
677
|
+
* perfect agreement with its declaration would have reported drift on every
|
|
678
|
+
* run, and a `repair` would have rewritten a setting that was already right.
|
|
679
|
+
*
|
|
680
|
+
* ARRAY order matters and is compared: `include_refs` is a list a reader
|
|
681
|
+
* compares line by line, and calling two genuinely different ref lists equal
|
|
682
|
+
* would hide a real difference.
|
|
683
|
+
*
|
|
684
|
+
* OBJECT KEY order does not, and must not. `JSON.stringify` preserves insertion
|
|
685
|
+
* order, `bypass_actors` entries are objects, GitHub emits its own key order and
|
|
686
|
+
* the declaration is hand-authored — so `{actor_type, actor_id}` against
|
|
687
|
+
* `{actor_id, actor_type}` would report drift forever on a repository that
|
|
688
|
+
* agrees with its declaration exactly. That is the same permanent false alarm
|
|
689
|
+
* this module removes elsewhere, reintroduced by a serializer detail, so keys
|
|
690
|
+
* are sorted before comparing.
|
|
691
|
+
* @param {*} observed What GitHub reports.
|
|
692
|
+
* @param {*} declared What the project declared.
|
|
693
|
+
* @returns {boolean} True when they agree.
|
|
694
|
+
*/
|
|
695
|
+
export function sameDeclaredValue(observed, declared) {
|
|
696
|
+
if (observed === declared) return true;
|
|
697
|
+
if (
|
|
698
|
+
observed === null ||
|
|
699
|
+
declared === null ||
|
|
700
|
+
typeof observed !== "object" ||
|
|
701
|
+
typeof declared !== "object"
|
|
702
|
+
) {
|
|
703
|
+
return false;
|
|
704
|
+
}
|
|
705
|
+
return canonicalJson(observed) === canonicalJson(declared);
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* Serialize a value with object keys in a stable order, arrays left alone.
|
|
710
|
+
* @param {*} value Any JSON-representable value.
|
|
711
|
+
* @returns {string} A key-order-independent serialization.
|
|
712
|
+
*/
|
|
713
|
+
function canonicalJson(value) {
|
|
714
|
+
return JSON.stringify(canonicalize(value));
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
/**
|
|
718
|
+
* Rebuild a value with every object's keys sorted, recursively.
|
|
719
|
+
* @param {*} value Any JSON-representable value.
|
|
720
|
+
* @returns {*} The same value with deterministic key order.
|
|
721
|
+
*/
|
|
722
|
+
function canonicalize(value) {
|
|
723
|
+
if (Array.isArray(value)) return value.map(entry => canonicalize(entry));
|
|
724
|
+
if (value === null || typeof value !== "object") return value;
|
|
725
|
+
return Object.fromEntries(
|
|
726
|
+
Object.keys(value)
|
|
727
|
+
.sort((left, right) => left.localeCompare(right))
|
|
728
|
+
.map(key => [key, canonicalize(value[key])])
|
|
729
|
+
);
|
|
730
|
+
}
|
|
731
|
+
|
|
610
732
|
/**
|
|
611
733
|
* Choose the ruleset a context repair should write to.
|
|
612
734
|
*
|
|
@@ -668,6 +790,63 @@ export function awaitedContexts(gates, moment) {
|
|
|
668
790
|
.filter(Boolean);
|
|
669
791
|
}
|
|
670
792
|
|
|
793
|
+
/**
|
|
794
|
+
* The app each awaited context is pinned to, where the project named one.
|
|
795
|
+
*
|
|
796
|
+
* A pin is what stops any other writer satisfying a required check. It has to
|
|
797
|
+
* come from the declaration, because the alternative — a shipped list of vendor
|
|
798
|
+
* integration ids — is the fleet-wide lock this replaced. An awaited context
|
|
799
|
+
* with no declared pin is written unpinned, which is GitHub's "any source";
|
|
800
|
+
* that is strictly what the reconciler did for every awaited context before
|
|
801
|
+
* config could express the pin at all.
|
|
802
|
+
* @param {object} gates The gates block.
|
|
803
|
+
* @param {string} moment The moment contexts were derived for.
|
|
804
|
+
* @returns {Record<string, number>} Context to GitHub App id.
|
|
805
|
+
*/
|
|
806
|
+
export function awaitedPins(gates, moment) {
|
|
807
|
+
const pins = {};
|
|
808
|
+
for (const gate of resolveMoment({ gates, moment })) {
|
|
809
|
+
if (gate.level !== "required" || gate.mode !== "await") continue;
|
|
810
|
+
if (!gate.awaits || gate.postedBy === null) continue;
|
|
811
|
+
pins[gate.awaits] = gate.postedBy;
|
|
812
|
+
}
|
|
813
|
+
return pins;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/**
|
|
817
|
+
* Read `github.rulesets.requiredChecks` into the three things a reconciliation
|
|
818
|
+
* needs from it.
|
|
819
|
+
*
|
|
820
|
+
* This is the declarative replacement for `addRequiredChecks`, and reading it
|
|
821
|
+
* here is what stops the reconciler reporting a context the project DID
|
|
822
|
+
* declare as EXTRA — a false alarm whose only offered fixes were `--prune`
|
|
823
|
+
* (deletes live protection) and editing the config to stop declaring it.
|
|
824
|
+
*
|
|
825
|
+
* The home matters as much as the name. A repository has several rulesets and
|
|
826
|
+
* the declaration says which one owns each context, so a repair can write it
|
|
827
|
+
* where it was declared instead of wherever the single fallback target points.
|
|
828
|
+
* @param {object} [requiredChecks] The `requiredChecks` map, by ruleset name.
|
|
829
|
+
* @returns {{contexts: string[], homes: Record<string, string>, pins: Record<string, number>}} Declared checks.
|
|
830
|
+
*/
|
|
831
|
+
export function declaredChecks(requiredChecks = {}) {
|
|
832
|
+
const contexts = [];
|
|
833
|
+
const homes = {};
|
|
834
|
+
const pins = {};
|
|
835
|
+
for (const [ruleset, entries] of Object.entries(requiredChecks ?? {})) {
|
|
836
|
+
if (!Array.isArray(entries)) continue;
|
|
837
|
+
for (const entry of entries) {
|
|
838
|
+
if (!entry || typeof entry !== "object") continue;
|
|
839
|
+
if (typeof entry.context !== "string") continue;
|
|
840
|
+
contexts.push(entry.context);
|
|
841
|
+
homes[entry.context] = ruleset;
|
|
842
|
+
if (Number.isInteger(entry.integration_id)) {
|
|
843
|
+
pins[entry.context] = entry.integration_id;
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
return { contexts, homes, pins };
|
|
848
|
+
}
|
|
849
|
+
|
|
671
850
|
/**
|
|
672
851
|
* Rewrite a ruleset's required contexts, returning a writable payload.
|
|
673
852
|
* @param {Ruleset} ruleset The live ruleset.
|
|
@@ -675,11 +854,13 @@ export function awaitedContexts(gates, moment) {
|
|
|
675
854
|
* @param {string[]} [options.add] Contexts to require.
|
|
676
855
|
* @param {string[]} [options.remove] Contexts to stop requiring.
|
|
677
856
|
* @param {string[]} [options.awaited] Of `add`, the ones an external app posts.
|
|
857
|
+
* @param {Record<string, number>} [options.pins] Declared app id per awaited
|
|
858
|
+
* context, from `awaitedPins`.
|
|
678
859
|
* @returns {Ruleset} A payload with read-only fields stripped.
|
|
679
860
|
*/
|
|
680
861
|
export function rulesetPayload(
|
|
681
862
|
ruleset,
|
|
682
|
-
{ add = [], remove = [], awaited = [] } = {}
|
|
863
|
+
{ add = [], remove = [], awaited = [], pins = {} } = {}
|
|
683
864
|
) {
|
|
684
865
|
const payload = structuredClone(ruleset);
|
|
685
866
|
for (const field of READ_ONLY_RULESET_FIELDS) delete payload[field];
|
|
@@ -690,11 +871,14 @@ export function rulesetPayload(
|
|
|
690
871
|
// Actions is supposed to post. Applied to an awaited context it does the
|
|
691
872
|
// opposite: it names the one app that will never post it, and the required
|
|
692
873
|
// check then blocks every pull request forever.
|
|
693
|
-
const additions = add.map(context =>
|
|
694
|
-
|
|
874
|
+
const additions = add.map(context => {
|
|
875
|
+
if (Object.hasOwn(pins, context)) {
|
|
876
|
+
return { context, integration_id: pins[context] };
|
|
877
|
+
}
|
|
878
|
+
return awaited.includes(context)
|
|
695
879
|
? { context }
|
|
696
|
-
: { context, integration_id: ACTIONS_INTEGRATION_ID }
|
|
697
|
-
);
|
|
880
|
+
: { context, integration_id: ACTIONS_INTEGRATION_ID };
|
|
881
|
+
});
|
|
698
882
|
|
|
699
883
|
if (!rule) {
|
|
700
884
|
payload.rules = [
|
|
@@ -738,6 +922,8 @@ export function rulesetPayload(
|
|
|
738
922
|
* @param {boolean} options.prune Whether EXTRA contexts may be removed.
|
|
739
923
|
* @param {string|null} options.rulesetName Explicit target ruleset.
|
|
740
924
|
* @param {string[]} [options.awaited] Contexts an external app posts.
|
|
925
|
+
* @param {Record<string, number>} [options.pins] Declared app id per awaited
|
|
926
|
+
* context.
|
|
741
927
|
* @returns {RepairAction[]} Planned actions.
|
|
742
928
|
*/
|
|
743
929
|
export function planRepairs({
|
|
@@ -747,29 +933,20 @@ export function planRepairs({
|
|
|
747
933
|
prune,
|
|
748
934
|
rulesetName,
|
|
749
935
|
awaited = [],
|
|
936
|
+
pins = {},
|
|
937
|
+
homes = {},
|
|
750
938
|
}) {
|
|
751
|
-
const plan = [
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
rulesetId: ruleset.id,
|
|
763
|
-
add: contexts.missing,
|
|
764
|
-
remove: removable,
|
|
765
|
-
payload: rulesetPayload(ruleset, {
|
|
766
|
-
add: contexts.missing,
|
|
767
|
-
remove: removable,
|
|
768
|
-
awaited,
|
|
769
|
-
}),
|
|
770
|
-
});
|
|
771
|
-
}
|
|
772
|
-
}
|
|
939
|
+
const plan = [
|
|
940
|
+
...planContextRepairs({
|
|
941
|
+
contexts,
|
|
942
|
+
live,
|
|
943
|
+
prune,
|
|
944
|
+
rulesetName,
|
|
945
|
+
awaited,
|
|
946
|
+
pins,
|
|
947
|
+
homes,
|
|
948
|
+
}),
|
|
949
|
+
];
|
|
773
950
|
|
|
774
951
|
// Rule (b): an EXTRA context is reported by name and left alone. Most of them
|
|
775
952
|
// are external apps Lisa never declares, and removing one silently strips a
|
|
@@ -816,6 +993,97 @@ export function planRepairs({
|
|
|
816
993
|
return plan;
|
|
817
994
|
}
|
|
818
995
|
|
|
996
|
+
/**
|
|
997
|
+
* Group the context repairs by the ruleset each one belongs to.
|
|
998
|
+
*
|
|
999
|
+
* Every add and every remove used to be written into ONE ruleset. For removals
|
|
1000
|
+
* that made `--prune` a no-op whenever the extra context lived somewhere other
|
|
1001
|
+
* than the fallback target: the payload dropped a context the target never
|
|
1002
|
+
* required, GitHub accepted it, and the check stayed required. For additions it
|
|
1003
|
+
* put a context under whichever ref-name condition the fallback target carries,
|
|
1004
|
+
* enforced somewhere other than where it was declared.
|
|
1005
|
+
*
|
|
1006
|
+
* A context's home is the ruleset that declares it in
|
|
1007
|
+
* `github.rulesets.requiredChecks`, or — for a gate-derived context, which
|
|
1008
|
+
* names no ruleset — the single carrier or the explicit `--ruleset`.
|
|
1009
|
+
* @param {object} options Planning inputs.
|
|
1010
|
+
* @param {ContextDrift} options.contexts Result of `reconcileContexts`.
|
|
1011
|
+
* @param {LivePolicy} options.live Result of `readLivePolicy`.
|
|
1012
|
+
* @param {boolean} options.prune Whether EXTRA contexts may be removed.
|
|
1013
|
+
* @param {string|null} options.rulesetName Explicit fallback target.
|
|
1014
|
+
* @param {string[]} options.awaited Contexts an external app posts.
|
|
1015
|
+
* @param {Record<string, number>} options.pins Declared app id per context.
|
|
1016
|
+
* @param {Record<string, string>} options.homes Declared ruleset per context.
|
|
1017
|
+
* @returns {RepairAction[]} Context actions, one per ruleset written.
|
|
1018
|
+
*/
|
|
1019
|
+
function planContextRepairs({
|
|
1020
|
+
contexts,
|
|
1021
|
+
live,
|
|
1022
|
+
prune,
|
|
1023
|
+
rulesetName,
|
|
1024
|
+
awaited,
|
|
1025
|
+
pins,
|
|
1026
|
+
homes,
|
|
1027
|
+
}) {
|
|
1028
|
+
/** @type {Map<string, {add: string[], remove: string[]}>} */
|
|
1029
|
+
const groups = new Map();
|
|
1030
|
+
const group = name => {
|
|
1031
|
+
if (!groups.has(name)) groups.set(name, { add: [], remove: [] });
|
|
1032
|
+
return groups.get(name);
|
|
1033
|
+
};
|
|
1034
|
+
const problems = [];
|
|
1035
|
+
|
|
1036
|
+
// A removal goes to the ruleset that actually requires it. That ruleset is
|
|
1037
|
+
// reported alongside every EXTRA context precisely so this is knowable.
|
|
1038
|
+
if (prune) {
|
|
1039
|
+
for (const entry of contexts.extra)
|
|
1040
|
+
group(entry.ruleset).remove.push(entry.context);
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
let fallback;
|
|
1044
|
+
for (const context of contexts.missing) {
|
|
1045
|
+
const home = homes[context];
|
|
1046
|
+
if (home) {
|
|
1047
|
+
group(home).add.push(context);
|
|
1048
|
+
continue;
|
|
1049
|
+
}
|
|
1050
|
+
fallback ??= repairTarget(live.rulesets, rulesetName);
|
|
1051
|
+
if (!fallback.ruleset) {
|
|
1052
|
+
problems.push(fallback.problem);
|
|
1053
|
+
continue;
|
|
1054
|
+
}
|
|
1055
|
+
group(fallback.ruleset.name).add.push(context);
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
const actions = [];
|
|
1059
|
+
for (const [name, { add, remove }] of groups) {
|
|
1060
|
+
const ruleset = (live.rulesets ?? []).find(entry => entry?.name === name);
|
|
1061
|
+
if (!ruleset) {
|
|
1062
|
+
actions.push({
|
|
1063
|
+
kind: "manual",
|
|
1064
|
+
message:
|
|
1065
|
+
`.lisa.config.json declares ${add.map(entry => `"${entry}"`).join(", ")} ` +
|
|
1066
|
+
`on a ruleset named "${name}", which this repository does not have. ` +
|
|
1067
|
+
`Seed it with scripts/lisa-github-rulesets.sh first — this script ` +
|
|
1068
|
+
`adds contexts to a ruleset, it does not create one.`,
|
|
1069
|
+
});
|
|
1070
|
+
continue;
|
|
1071
|
+
}
|
|
1072
|
+
actions.push({
|
|
1073
|
+
kind: "contexts",
|
|
1074
|
+
ruleset: ruleset.name,
|
|
1075
|
+
rulesetId: ruleset.id,
|
|
1076
|
+
add,
|
|
1077
|
+
remove,
|
|
1078
|
+
payload: rulesetPayload(ruleset, { add, remove, awaited, pins }),
|
|
1079
|
+
});
|
|
1080
|
+
}
|
|
1081
|
+
for (const problem of [...new Set(problems)]) {
|
|
1082
|
+
actions.push({ kind: "manual", message: problem });
|
|
1083
|
+
}
|
|
1084
|
+
return actions;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
819
1087
|
/**
|
|
820
1088
|
* Execute a plan. Never called under `--dry-run` or outside `repair`.
|
|
821
1089
|
* @param {object} options Write inputs.
|
|
@@ -882,12 +1150,15 @@ export function applyRepairs({ repo, gh, plan }) {
|
|
|
882
1150
|
* @param {string|null} [options.rulesetName] Explicit repair target.
|
|
883
1151
|
* @param {boolean} [options.ghMissing] Whether resolving `repo` failed because
|
|
884
1152
|
* `gh` is not installed, rather than because nothing named the repository.
|
|
1153
|
+
* @param {object} [options.requiredChecks] The `github.rulesets.requiredChecks`
|
|
1154
|
+
* map, whose contexts are declared alongside the gate-derived ones.
|
|
885
1155
|
* @returns {Reconciliation} The reconciliation result.
|
|
886
1156
|
*/
|
|
887
1157
|
export function reconcile({
|
|
888
1158
|
repo,
|
|
889
1159
|
gates = {},
|
|
890
1160
|
policy = {},
|
|
1161
|
+
requiredChecks = {},
|
|
891
1162
|
gh = ghRunner,
|
|
892
1163
|
moment = "pull-request",
|
|
893
1164
|
workflowName = "🔍 Quality Checks",
|
|
@@ -898,7 +1169,13 @@ export function reconcile({
|
|
|
898
1169
|
rulesetName = null,
|
|
899
1170
|
ghMissing = false,
|
|
900
1171
|
}) {
|
|
901
|
-
const
|
|
1172
|
+
const configured = declaredChecks(requiredChecks);
|
|
1173
|
+
const declared = [
|
|
1174
|
+
...new Set([
|
|
1175
|
+
...contextsFor(gates, { moment, workflowName, previousLabels }),
|
|
1176
|
+
...configured.contexts,
|
|
1177
|
+
]),
|
|
1178
|
+
].sort((left, right) => left.localeCompare(right));
|
|
902
1179
|
const base = { repo, moment, declared, onDrift, dryRun, prune };
|
|
903
1180
|
|
|
904
1181
|
if (!repo) {
|
|
@@ -957,6 +1234,21 @@ export function reconcile({
|
|
|
957
1234
|
prune,
|
|
958
1235
|
rulesetName,
|
|
959
1236
|
awaited: awaitedContexts(gates, moment),
|
|
1237
|
+
pins: { ...configured.pins, ...awaitedPins(gates, moment) },
|
|
1238
|
+
// An awaited context has no ruleset in its declaration — it is declared
|
|
1239
|
+
// on a GATE. Its home is the ruleset Lisa generates from config, which
|
|
1240
|
+
// is where the applier writes it, so the two writers agree instead of
|
|
1241
|
+
// the reconciler needing --ruleset to place a context the generator
|
|
1242
|
+
// already placed.
|
|
1243
|
+
homes: {
|
|
1244
|
+
...Object.fromEntries(
|
|
1245
|
+
awaitedContexts(gates, moment).map(context => [
|
|
1246
|
+
context,
|
|
1247
|
+
POLICY_RULESET_NAME,
|
|
1248
|
+
])
|
|
1249
|
+
),
|
|
1250
|
+
...configured.homes,
|
|
1251
|
+
},
|
|
960
1252
|
})
|
|
961
1253
|
: [];
|
|
962
1254
|
const outcomes =
|
|
@@ -1140,6 +1432,7 @@ function main() {
|
|
|
1140
1432
|
ghMissing,
|
|
1141
1433
|
gates,
|
|
1142
1434
|
policy,
|
|
1435
|
+
requiredChecks: config?.github?.rulesets?.requiredChecks ?? {},
|
|
1143
1436
|
gh: ghRunner,
|
|
1144
1437
|
moment: flag("moment") ?? "pull-request",
|
|
1145
1438
|
workflowName: flag("workflow") ?? "🔍 Quality Checks",
|
|
@@ -24,7 +24,7 @@ import { resolveLisaPackageRoot } from "./gate-report-registry.js";
|
|
|
24
24
|
* Read `.lisa.config.json` as a plain record.
|
|
25
25
|
*
|
|
26
26
|
* The whole file rather than only its `gates` block, because the per-repo
|
|
27
|
-
* `github.rulesets.
|
|
27
|
+
* `github.rulesets.requiredChecks` and `dropRequiredChecks` opt-ins change
|
|
28
28
|
* which contexts a template actually ends up requiring.
|
|
29
29
|
* @param projectRoot - Project root
|
|
30
30
|
* @returns The parsed object, or null when it could not be read
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA2gBjC,CAAC"}
|
|
@@ -286,6 +286,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
286
286
|
"305da36e781086e7d0a6d58e9cdd26f1033a19787b35f1a60e37aab344b82f48",
|
|
287
287
|
"31b71ad3ff4874bddcca3a7596c22b70505be90360806eea6706f8f47598fb01",
|
|
288
288
|
"31c9de79a8a8e15178c7c2df0d2df91272226d18eef7d99c5ed37950159f9085",
|
|
289
|
+
"37c2c3642c3c8ea92b9d53d9c10e2b7365e4c5e757af54396ef0af06720a89c6",
|
|
289
290
|
"407799d7eef3c61902cce4a9d4e194176453a28d8b562b327a75ec843da51684",
|
|
290
291
|
"444ed4b879ef7af5dc409ae48743ad06354e47b727ddb5be0877cab52ddd0b64",
|
|
291
292
|
"4634a1012f1c9ef991ce99ee98eb85a57d207e99b1da1bc760a67a09b5017946",
|
|
@@ -316,8 +317,10 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
316
317
|
"c950082c3a0e7e987a8d32455eb16103cd0516c9b907f551a93395eb2e61d253",
|
|
317
318
|
"cc4270e365f53c60a5eefb58a8ac8e22be184c0821fcdcc8fe67bcfc1df5e3dd",
|
|
318
319
|
"ccbbab687ee2dbc572726ae187324af34b971075b6c808e1781005b489500429",
|
|
320
|
+
"cd41b2f04be5ba97be8fd6e618e8bccca4c4d0823acbc8e82c239b6d45dfe020",
|
|
319
321
|
"d1b7ef530ea29a4ab1c5b1aaa13bd94262d2a0d16cfd7066345efc526457f44c",
|
|
320
322
|
"d404a7f78facf07abf5633e3aeb9ba779334bfebd2989cc4cb38d1b37d96a2ba",
|
|
323
|
+
"d545c49bbe6bf31c224d4205ee1fcb8e849c057d5241913c19f83d4ba7195793",
|
|
321
324
|
"dab7ae5948e26b49eb4caf0ef6be5f3a29b6ed013edef73904a20ba5e06a1b22",
|
|
322
325
|
"dbca450e5a17133841ab015e71808feb028996f8297fda362dbeca4f07af2352",
|
|
323
326
|
"e13d9c5ee11648cebae22d71890c0b81415c72e5e5b977472bffa810dfe52dd4",
|
|
@@ -325,6 +328,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
325
328
|
"e7d928c3b2d878c7a9ec9589894dfc3feaba54b8913c87be0550c34a1431ed9f",
|
|
326
329
|
"f0343c4ef3fde6576362eeb52e1ae3855108eba9d5034ccec8478db0637935d8",
|
|
327
330
|
"f1bcdbc71883ee315034fe8e1dedfc83ea0d8e8ca5d445c455cfa448581a75a9",
|
|
331
|
+
"f8ae8672df5cc6e8485bbb5d9292a19ee0cac4d9b02c3489869f3352c61d8d2e",
|
|
328
332
|
"f8ebc11f8bbb27ce8cea883044687f7c023302a928de1d917209cae84274367a",
|
|
329
333
|
"f9e94e7daa0fffedefb224882c2944f66a8f39d60e6a4c1f4410975a7f98ef24",
|
|
330
334
|
"fbd68cf571985d7cfccf0f280cfe8112955849126e44d27d55ad619f9abb79ef",
|
|
@@ -425,9 +429,11 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
425
429
|
]),
|
|
426
430
|
"scripts/lisa-reconcile-policy.mjs": Object.freeze([
|
|
427
431
|
"3c062d0b79961a9a93a822507e893dcdaa71d65d735557727d20464c2489d812",
|
|
432
|
+
"3e67eb4b0710ec195ad7efa4a8c2fd64063897d67725ea2627cf869c7e066201",
|
|
428
433
|
"4b383ff960d7da53e0dd46e37632ef55c5a38b004fb4aabfe91a25a9fe02d88f",
|
|
429
434
|
"9b613888c4c1cc6cc2b1fb6e162a4c766012eab0ec4f8b7f2ac1bc3da6622c97",
|
|
430
435
|
"d429b5c3ad47553a73cdb2e0ea3ee81268df85d5374b06a93233d1971f7d15da",
|
|
436
|
+
"f490aa56b466d961d7372f94c2fb3f0e5deb31e53212a67dd79ac4afee48d4b4",
|
|
431
437
|
]),
|
|
432
438
|
"scripts/lisa-run-gates.mjs": Object.freeze([
|
|
433
439
|
"080c69ab998309a0a8b4f3be74c445056da02f1403c5654bea13477fc3178604",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lisa-owned-hash-ledger.js","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAg3EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAg3EpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAw8OjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
|