ci: run native OpenSpec and local link validation in verify (WealthLedger/specs#2)
npm run validate: toolchain check, openspec schema validate, openspec validate --all --strict, lychee --offline --include-fragments for root *.md and openspec/specs. CI verify installs the pinned CLI and sha256-pinned lychee and runs it. Closes #2
This commit was merged in pull request #73.
This commit is contained in:
@@ -34,3 +34,20 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
echo "Checked revision: $(git rev-parse HEAD); range: $range"
|
echo "Checked revision: $(git rev-parse HEAD); range: $range"
|
||||||
git diff --check "$range"
|
git diff --check "$range"
|
||||||
|
- uses: https://github.com/actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: .nvmrc
|
||||||
|
- name: Install pinned OpenSpec CLI and lychee 0.24.2
|
||||||
|
run: |
|
||||||
|
npm install -g "@fission-ai/openspec@$(cat openspec/.cli-version)"
|
||||||
|
openspec store register .
|
||||||
|
curl --fail --location --silent --show-error https://github.com/lycheeverse/lychee/releases/download/lychee-v0.24.2/lychee-x86_64-unknown-linux-gnu.tar.gz -o /tmp/lychee.tar.gz
|
||||||
|
echo '1f4e0ef7f6554a6ed33dd7ac144fb2e1bbed98598e7af973042fc5cd43951c9a /tmp/lychee.tar.gz' | sha256sum --check
|
||||||
|
tar -xzf /tmp/lychee.tar.gz -C /tmp
|
||||||
|
echo /tmp/lychee-x86_64-unknown-linux-gnu >> "$GITHUB_PATH"
|
||||||
|
env:
|
||||||
|
OPENSPEC_TELEMETRY: '0'
|
||||||
|
- name: Validate schemas, specs, changes and local links
|
||||||
|
run: npm run validate
|
||||||
|
env:
|
||||||
|
OPENSPEC_TELEMETRY: '0'
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ HTTP-провайдер публикует контракт, а потребит
|
|||||||
и локально проверяет generated types. Specs фиксируют behavioral requirements;
|
и локально проверяет generated types. Specs фиксируют behavioral requirements;
|
||||||
другие checkout не нужны для чтения и native validation этого store.
|
другие checkout не нужны для чтения и native validation этого store.
|
||||||
|
|
||||||
Архивы и чужие active changes сохраняй. Для правки индекса проверь targets,
|
Архивы и чужие active changes сохраняй. Для правки индекса или specs выполни
|
||||||
anchors и `git diff --check`; application gates принадлежат affected repos.
|
`npm run validate` (targets/anchors, native checks) и `git diff --check`;
|
||||||
|
application gates принадлежат affected repos.
|
||||||
Если явно запрошена работа через OpenSpec, следуй
|
Если явно запрошена работа через OpenSpec, следуй
|
||||||
[локальным инструкциям OpenSpec](README.md#начало-работы)
|
[локальным инструкциям OpenSpec](README.md#начало-работы)
|
||||||
и используй store `wealth-ledger-specs`. Перед Node-командами активируй
|
и используй store `wealth-ledger-specs`. Перед Node-командами активируй
|
||||||
|
|||||||
@@ -18,14 +18,18 @@ OpenSpec применяется после явного решения Change Ow
|
|||||||
Для native validation из этого репозитория:
|
Для native validation из этого репозитория:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run check:openspec
|
npm run validate
|
||||||
openspec schema validate wealth-ledger-sdd --verbose
|
|
||||||
openspec schema validate wealth-ledger-sdd-v2 --verbose
|
|
||||||
openspec status --change <change> --store wealth-ledger-specs
|
|
||||||
openspec validate <change> --type change --strict --store wealth-ledger-specs
|
|
||||||
openspec validate --specs --strict --store wealth-ledger-specs
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Одна команда, её же вызывает CI `verify`: `check:openspec` (Node, версия CLI,
|
||||||
|
store), `openspec schema validate` (все schemas), `openspec validate --all --strict`
|
||||||
|
(specs и active changes) и [lychee](https://lychee.cli.rs/) 0.24.2 `--offline
|
||||||
|
--include-fragments` для относительных ссылок и anchors в корневых `*.md`
|
||||||
|
(включая `AI_INDEX`) и `openspec/specs`. Архивы и внешние URL не проверяются.
|
||||||
|
В чистой среде один раз: `openspec store register .`; lychee ставится
|
||||||
|
отдельно (например, `brew install lychee`). Для отдельного change:
|
||||||
|
`openspec status --change <change> --store wealth-ledger-specs`.
|
||||||
|
|
||||||
OpenSpec CLI ставится глобально и не закрепляется в `package.json`: его транзитивная
|
OpenSpec CLI ставится глобально и не закрепляется в `package.json`: его транзитивная
|
||||||
зависимость `braces` имеет advisory без исправления в 3.x. Ожидаемая версия хранится
|
зависимость `braces` имеет advisory без исправления в 3.x. Ожидаемая версия хранится
|
||||||
в `openspec/.cli-version`; `npm run check:openspec` проверяет Node из `.nvmrc`, версию
|
в `openspec/.cli-version`; `npm run check:openspec` проверяет Node из `.nvmrc`, версию
|
||||||
@@ -36,8 +40,8 @@ Node задаётся собственной `.nvmrc`; после `nvm use --sil
|
|||||||
`npm run verify` локально проверяет whitespace в незакоммиченном diff; CI `verify`
|
`npm run verify` локально проверяет whitespace в незакоммиченном diff; CI `verify`
|
||||||
выполняет тот же `git diff --check` по коммитам PR (merge-base→head) или push
|
выполняет тот же `git diff --check` по коммитам PR (merge-base→head) или push
|
||||||
(before→after, для новой ветки — последний коммит). Это структурная проверка
|
(before→after, для новой ветки — последний коммит). Это структурная проверка
|
||||||
whitespace, не semantic spec validation. OpenSpec validation остаётся отдельной
|
whitespace. Ни whitespace, ни structural validation не заменяют semantic review.
|
||||||
проверкой при изменениях требований. История релизов — [CHANGELOG](CHANGELOG.md).
|
История релизов — [CHANGELOG](CHANGELOG.md).
|
||||||
|
|
||||||
## Релизы
|
## Релизы
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"verify": "git diff --check",
|
"verify": "git diff --check",
|
||||||
"check:openspec": "node scripts/check-openspec.cjs",
|
"check:openspec": "node scripts/check-openspec.cjs",
|
||||||
|
"validate": "npm run check:openspec && openspec schema validate && openspec validate --all --strict --no-interactive --store wealth-ledger-specs && lychee --offline --include-fragments --no-progress './*.md' openspec/specs",
|
||||||
"release:preview": "release-it --dry-run --ci",
|
"release:preview": "release-it --dry-run --ci",
|
||||||
"release:prepare": "release-it --ci",
|
"release:prepare": "release-it --ci",
|
||||||
"commitlint": "commitlint",
|
"commitlint": "commitlint",
|
||||||
|
|||||||
Reference in New Issue
Block a user