diff --git a/.github/lint-pilot.md b/.github/lint-pilot.md new file mode 100644 index 0000000..062f94e --- /dev/null +++ b/.github/lint-pilot.md @@ -0,0 +1,13 @@ +# Shared lint pilot + +The [pilot workflow](workflows/zsh-lint-pilot.yml) qualifies the shared reporting wrapper under [issue #30](https://github.com/z-shell/zunit/issues/30). It runs on every pull request targeting `main`, including documentation-only changes and forks, and every push to `main`. + +The explicit [configuration](../zsh-lint.json) selects only `build.zsh`, with the `standalone-executable` profile and unchanged Zsh 5.5.1 floor. Runtime libraries, generated `zunit`, tests and the ZUnit DSL retain their existing validation and are outside this analyzer inventory. + +The config uses schema v2 and identifier `zunit`, replacing the obsolete schema-v1 empty namespace list. The existing lint job and pilot both pin released analyzer v1.3.0 at `999cb76cc65ef6af56c0ae65ab0f3622eb527944`; that release rejects schema v1. The existing required check name remains unchanged. Direct and wrapped analyzer invocations must be compared at the same revision and configuration to isolate wrapper behavior. + +The pilot pins the reviewed shared workflow at `af725f0ad9c7b24dd4f4527e582ade2eb8e9ea7b`. Its artifact records both revisions, the resolved inventory, diagnostics, stderr and outcome. Artifact retention is 14 days; lasting qualification evidence belongs on issue #30. + +`mode: observe` reports semantic findings without failing the job. Parser failures, malformed configuration and infrastructure failures still fail. The caller grants only `contents: read`, passes no secrets and uses the ordinary `pull_request` event. The new check remains advisory; required-check changes need separate approval after hosted check-name, trigger and fork qualification. + +Native syntax, compilation and functional workflows remain active. The analyzer profile's declared minimum is not a replacement for runtime testing at that version. Roll back this enrollment by reverting the pilot workflow and this guide, and restore the old config and analyzer commit `1e8b0a6c02d4aa433e6aee8ca141e11ef62ba76b` together. Mixing schema v1 with v1.3.0 fails configuration validation. diff --git a/.github/workflows/zsh-lint-pilot.yml b/.github/workflows/zsh-lint-pilot.yml new file mode 100644 index 0000000..f7d51fe --- /dev/null +++ b/.github/workflows/zsh-lint-pilot.yml @@ -0,0 +1,27 @@ +--- +name: Zsh Lint Pilot + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: {} + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + zsh-lint-pilot: + name: Observe Zsh Lint + uses: z-shell/.github/.github/workflows/zsh-lint.yml@af725f0ad9c7b24dd4f4527e582ade2eb8e9ea7b # main + with: + paths: build.zsh + zsh-lint-ref: 999cb76cc65ef6af56c0ae65ab0f3622eb527944 # v1.3.0 + config: zsh-lint.json + mode: observe + artifact-name: zsh-lint-pilot-report diff --git a/.github/workflows/zsh-lint.yml b/.github/workflows/zsh-lint.yml index 5b1d65b..7bc165e 100644 --- a/.github/workflows/zsh-lint.yml +++ b/.github/workflows/zsh-lint.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: z-shell/zsh-lint - ref: 1e8b0a6c02d4aa433e6aee8ca141e11ef62ba76b + ref: 999cb76cc65ef6af56c0ae65ab0f3622eb527944 # v1.3.0 path: .zsh-lint-tool persist-credentials: false - name: Set up Go diff --git a/zsh-lint.json b/zsh-lint.json index adcf2bd..ef699b6 100644 --- a/zsh-lint.json +++ b/zsh-lint.json @@ -1,9 +1,14 @@ { - "version": 1, + "version": 2, "project": { "kind": "tool", "minimum_zsh": "5.5.1", - "function_namespaces": [] + "identifier": "zunit" }, - "sources": [{ "root": "build.zsh", "profile": "standalone-executable" }] + "sources": [ + { + "root": "build.zsh", + "profile": "standalone-executable" + } + ] }