Skip to content

feat(l9-ci-pack): full v2 instantiation pack + legacy-mark @v1 starters + tag-v1.sh fix#8

Open
cryptoxdog wants to merge 41 commits into
mainfrom
l9-ci-pack-v2
Open

feat(l9-ci-pack): full v2 instantiation pack + legacy-mark @v1 starters + tag-v1.sh fix#8
cryptoxdog wants to merge 41 commits into
mainfrom
l9-ci-pack-v2

Conversation

@cryptoxdog

Copy link
Copy Markdown

Summary

Delivers the full l9-ci-core v2 instantiation surface into this repo per
the Core v2 org delivery plan, so
any consumer/agent can instantiate Core from .github alone.

Pinned Core ref throughout this PR: f88116503430aa18992b70d8d31063e34ff97ef1
(pre-release candidate on l9-ci-core@main, post #33 merge — includes the
d2c2cd7/98f012f provisioning fixes). Will become @v2.0.0/@v2 in a
follow-up single pin-flip PR once l9-ci-core v2.0.0 is tagged (human-run
release step — not done in this PR).

Changes

  • l9-ci-pack/ (new) — full v2 CI instantiation kit: README.md
    (agent-first, copy-paste steps for Python + Node), governance/*.yaml (6
    files), workflows/{l9-analysis,l9-lint-test,l9-lint-test-node}.yml
    synced from l9-ci-core/docs/templates/ at the candidate SHA above.
  • workflow-templates/l9-v2-{analysis,lint-test,lint-test-node}.{yml,properties.json}
    (new) — org starters aligned to l9-ci-pack/workflows/, so "Set up this
    workflow" in the Actions tab offers the v2 path.
  • Existing 9 @v1 starters (l9-governance, l9-nightly,
    l9-node-ts-monorepo, l9-pr-pipeline, l9-pre-commit, l9-release,
    l9-sbom, l9-scorecard, l9-security) — marked Legacy (frozen @v1)
    in both the .yml banner comment and .properties.json description.
    Content/behavior unchanged — still resolve against the frozen historical
    kernel commit.
  • ops/tag-v1.sh (fix) — no longer asserts origin/main == EXPECTED_SHA
    (main has since moved to the v2 rewrite and will never equal that historical
    SHA again). Now fetches and tags the pinned historical commit directly,
    independent of where main is.
  • ops/sync-v2-starters.sh (new) — syncs l9-ci-pack/ from
    l9-ci-core/docs/templates/ at a given ref and re-pins every Core uses:
    in the pack + workflow-templates/l9-v2-*.yml to that ref in one pass.
  • ops/validate-starters.sh (hardened) — now also asserts the
    l9-ci-pack/ required file set is present (6 governance + 3 workflow
    templates + README) and free of @main refs. Issue/PR templates are
    intentionally not required in the pack (owned solely by this repo's own
    community-health files).
  • .github/workflows/validate-starters.yml (new) — runs
    ops/validate-starters.sh on every PR to this repo.
  • workflow-interface-registry.yml — added a v2: block (current
    candidate SHA, pack paths, reusable-workflow/consumer-template split,
    explicit no_v2_equivalent list); existing kernels: list annotated as the
    frozen @v1 set.
  • CONTRIBUTING.md, profile/README.md — point new-repo CI
    instantiation at l9-ci-pack/README.md; existing @v1 kernel table kept
    but marked legacy.

Explicitly out of scope for this PR

  • Running ops/tag-v1.sh (cuts v1.0.0/v1 tags) — human-run per repo
    policy.
  • Cutting l9-ci-core v2.0.0 or flipping any pin from the candidate SHA to
    @v2.0.0 — gated on Core's own verify-then-release flow.
  • Re-adding Scorecard/SBOM/Gitleaks/pre-commit/nightly-release as Core
    reusable workflows — SDK doesn't implement those providers yet (see
    no_v2_equivalent in the registry and l9-ci-core/AGENTS.md §7 for the
    dormant-SDK-CLI triage).

Test plan

  • ops/validate-starters.sh run locally against this branch's content — 22 passed, 0 failed.
  • Every pack/starter Core pin verified to be the full 40-char candidate SHA (f88116503430aa18992b70d8d31063e34ff97ef1), no @main anywhere.
  • CI on this PR (validate-starters.yml, newly added) green.
  • Dogfood: instantiate a throwaway repo from l9-ci-pack/README.md only (Python + Node paths) — tracked as the Phase D verify step in the Core plan, not blocking this PR.

Made with Cursor

@cursor

cursor Bot commented Jul 20, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@sonarqubecloud

Copy link
Copy Markdown

cryptoxdog added a commit that referenced this pull request Jul 20, 2026
- actionlint.yml: download the actionlint install script to a file and
  verify its sha256 before executing (was curl|bash with no verification —
  BLOCKER githubactions:S8482).
- properties-json-schema.yml: pin jsonschema==4.26.0 and add
  --only-binary :all: to the pip install (MAJOR githubactions:S8541/S8544);
  wrapped in a run: | block since the bare "--only-binary :all:" plain
  scalar tripped actionlint's YAML parser (colon-space ambiguity).
- ops/audit-sha-pins.sh: assign $1 to a local var in is_sha() before use,
  and use [[ instead of [ for the two remaining conditionals (MAJOR
  shelldre:S7679/S7688 x2). Re-verified with shellcheck (clean) and the
  existing positive/negative test suite (unchanged: 20/39 refs clean
  depending on pre/post PR #8 merge, injected violations still caught).

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant