Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 30 additions & 28 deletions .github/workflows/actions.lock
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,33 @@ workflows:
'.github/workflows/dogfood-gate.yml':
- 'actions/checkout@v7.0.1'
- 'hyperpolymath/deed-ecosystem@main'
- 'hyperpolymath/k9-ecosystem@main'
'.github/workflows/e2e.yml':
- 'actions/checkout@v7.0.1'
- 'dtolnay/rust-toolchain@v1'
- 'goto-bus-stop/setup-zig@v2.2.1'
- 'swatinem/rust-cache@v2.9.3'
'.github/workflows/fork-governance.yml':
- 'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
'.github/workflows/governance.yml':
- 'hyperpolymath/standards@75bd5994470661a099df562d6d5ad2fe744dbd66'
- 'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
'.github/workflows/hypatia-scan.yml':
- 'hyperpolymath/standards@75bd5994470661a099df562d6d5ad2fe744dbd66'
- 'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
'.github/workflows/instant-sync.yml':
- 'peter-evans/repository-dispatch@v4.0.1'
'.github/workflows/label-triage.yml': []
'.github/workflows/labels.yml': []
'.github/workflows/main-estate-audit.yml':
- 'hyperpolymath/cicd-suite@4f5404281dd7092fa77cc18daec7237c4f1ee4ac'
'.github/workflows/mirror.yml':
- 'hyperpolymath/standards@75bd5994470661a099df562d6d5ad2fe744dbd66'
- 'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
'.github/workflows/push-email-notify.yml':
- 'hyperpolymath/smtp-notify-action@v0.5.0'
'.github/workflows/rust-ci.yml':
- 'hyperpolymath/standards@412a7031577112b31ee287cc6060179d638d6500'
- 'metadatastician/standards@412a7031577112b31ee287cc6060179d638d6500'
'.github/workflows/scorecard.yml':
- 'hyperpolymath/standards@75bd5994470661a099df562d6d5ad2fe744dbd66'
- 'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
'.github/workflows/secret-scanner.yml':
- 'hyperpolymath/standards@75bd5994470661a099df562d6d5ad2fe744dbd66'
- 'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
dependencies:
'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9':
ref: 'v6.1.0'
Expand Down Expand Up @@ -78,6 +79,11 @@ dependencies:
commit: 'sha1-368f82528645a54fb793d4d04e342629a3f51346'
owner_id: 44036562
repo_id: 438112499
'actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333':
ref: 'v8.0.2'
commit: 'sha1-9000827ccba6bdab643e8b6fd33ac0654aef8333'
owner_id: 44036562
repo_id: 192626254
'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f':
ref: 'v7.0.0'
commit: 'sha1-bbbca2ddaa5d8feaa63e36b76fdaad77386f024f'
Expand All @@ -100,9 +106,9 @@ dependencies:
commit: 'sha1-22d081ff2d3a40755e97629de92e3bcbfa7cf2ed'
owner_id: 42048915
repo_id: 356423100
'dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f':
'dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8':
ref: 'v1'
commit: 'sha1-e2a55d2ffb04f378e9626c28d38b36d230d1e12f'
commit: 'sha1-683b588c487a69d01f6c6ddf40f036ff682cc2c8'
owner_id: 1940490
repo_id: 260749683
'dtolnay/rust-toolchain@v1':
Expand Down Expand Up @@ -171,41 +177,37 @@ dependencies:
commit: 'sha1-2155aa26a21758f2ba119f61bc7e0e1981c106fb'
owner_id: 6759885
repo_id: 1275650185
'hyperpolymath/k9-ecosystem@main':
ref: 'main'
commit: 'sha1-20f6be5b5a14a48680b236955b5c4ad9033d00d4'
owner_id: 6759885
repo_id: 1275650185
'hyperpolymath/smtp-notify-action@v0.5.0':
ref: 'v0.5.0'
commit: 'sha1-c1c9fa07992a02c1fd3d67a0dc1b08cccb852aef'
owner_id: 6759885
repo_id: 1352485172
'hyperpolymath/standards@412a7031577112b31ee287cc6060179d638d6500':
ref: '412a7031577112b31ee287cc6060179d638d6500'
commit: 'sha1-412a7031577112b31ee287cc6060179d638d6500'
owner_id: 6759885
repo_id: 1116521501
'hyperpolymath/standards@75bd5994470661a099df562d6d5ad2fe744dbd66':
ref: '75bd5994470661a099df562d6d5ad2fe744dbd66'
commit: 'sha1-75bd5994470661a099df562d6d5ad2fe744dbd66'
owner_id: 6759885
'metadatastician/standards@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8':
ref: '1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
commit: 'sha1-1fdc61c0c1c8f4c94324f956700d78d1ea9584a8'
owner_id: 297579217
repo_id: 1116521501
uses:
- 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9'
- 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1'
- 'actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333'
- 'actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9'
- 'denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed'
- 'dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f'
- 'dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8'
- 'editorconfig-checker/action-editorconfig-checker@51f63319f592f97930c73d9c46184d20bd206393'
- 'erlef/setup-beam@54075bcc5e249e4758d363f27d099f55d843f124'
- 'github/codeql-action@b96794f015dfd88f77b49b1c93e0fa7110f94c63'
- 'ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc'
- 'ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e'
- 'oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6'
- 'webfactory/ssh-agent@e83874834305fe9a4a2997156cb26c5de65a8555'
'ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc':
ref: 'v2.4.4'
commit: 'sha1-2d1146689b8cda280b9bc96326124645441f03bc'
'metadatastician/standards@412a7031577112b31ee287cc6060179d638d6500':
ref: '412a7031577112b31ee287cc6060179d638d6500'
commit: 'sha1-412a7031577112b31ee287cc6060179d638d6500'
owner_id: 297579217
repo_id: 1116521501
'ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e':
ref: 'v2.5.0'
commit: 'sha1-fa7117db83c52d787ae5a89f350999701505d78e'
owner_id: 67707773
repo_id: 421101922
'oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6':
Expand Down
56 changes: 6 additions & 50 deletions .github/workflows/dogfood-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,55 +63,11 @@ jobs:
echo "Scanned **${MANIFEST_COUNT}** .a2ml/.deed manifest(s). See step output for details." >> "$GITHUB_STEP_SUMMARY"
fi

# ---------------------------------------------------------------------------
# Job 2: K9 contract validation
# ---------------------------------------------------------------------------
k9-validate:
name: Validate K9 contracts
runs-on: ubuntu-latest
timeout-minutes: 10

steps:
- name: Checkout repository
uses: actions/checkout@v7.0.1

- name: Check for K9 files
id: detect
run: |
COUNT=$(find . \( -name '*.k9' -o -name '*.k9.ncl' \) -not -path './.git/*' | wc -l)
CONFIG_COUNT=$(find . \( -name '*.toml' -o -name '*.yaml' -o -name '*.yml' -o -name '*.json' \) \
-not -path './.git/*' -not -path './node_modules/*' -not -path './.deno/*' \
-not -name 'package-lock.json' -not -name 'Cargo.lock' -not -name 'deno.lock' | wc -l)
echo "k9_count=$COUNT" >> "$GITHUB_OUTPUT"
echo "config_count=$CONFIG_COUNT" >> "$GITHUB_OUTPUT"
if [ "$COUNT" -eq 0 ] && [ "$CONFIG_COUNT" -gt 0 ]; then
echo "::warning::Found $CONFIG_COUNT config files but no K9 contracts. Run k9iser to generate contracts."
fi

- name: Validate K9 contracts
if: steps.detect.outputs.k9_count > 0
uses: hyperpolymath/k9-ecosystem/validate-action@main
with:
path: '.'
strict: 'false'

- name: Write summary
run: |
K9_COUNT="${{ steps.detect.outputs.k9_count }}"
CFG_COUNT="${{ steps.detect.outputs.config_count }}"
if [ "$K9_COUNT" -eq 0 ]; then
cat <<'EOF' >> "$GITHUB_STEP_SUMMARY"
## K9 Contract Validation

:warning: **No .a2ml/.deed manifest files found.** Every RSR-compliant repo should have a repo deed (`<reponame>_chora.deed`) at its root.

Generate contracts with: `k9iser generate .`
EOF
else
echo "## K9 Contract Validation" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Validated **${K9_COUNT}** K9 contract(s) against **${CFG_COUNT}** config file(s)." >> "$GITHUB_STEP_SUMMARY"
fi
# K9 contract validation moved to fork-governance.yml, which runs the
# canonical K9-DEED conformance lane (metadatastician/standards
# k9-conformance.yml, contract v1.0.0) and reports it in the PR comment.
# The k9-ecosystem validate-action that ran here rejected the `K9!`
# envelope the contract requires, so the two could not both pass.

# ---------------------------------------------------------------------------
# Job 3: Empty-linter — invisible character detection
Expand Down Expand Up @@ -244,7 +200,7 @@ jobs:
name: Dogfooding compliance summary
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [deed-validate, k9-validate, empty-lint, groove-check]
needs: [deed-validate, empty-lint, groove-check]
if: always()

steps:
Expand Down
74 changes: 74 additions & 0 deletions .github/workflows/fork-governance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# This workflow is managed by gh actions-lock.
# SPDX-License-Identifier: MPL-2.0
# fork-governance.yml — one PR comment for the DEED, K9-DEED and Hypatia lanes.
#
# Adopted per metadatastician/standards 3-practice/fork-governance/ADOPTION.adoc.
# The three lanes produce verdicts and artifacts; the verdict job reads them
# from this workflow's `needs` graph (a reusable cannot see its caller's jobs)
# and posts one comment, updated in place on every push.
#
# All four `uses:` and `canon-ref` are the same standards commit: two refs that
# can drift are two renderers that can disagree.
#
# DEED: `require-files: false` — PanLL has no `.deed` files yet (its manifests
# are still `.a2ml`, pending the estate-wide `.a2ml` → `.deed` migration,
# standards #837), so the lane reports grey "not applicable" instead of red.
name: Fork governance

on:
pull_request:
workflow_dispatch:
Comment thread
hyperpolymath marked this conversation as resolved.

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
deed:
name: DEED syntax
uses: metadatastician/standards/.github/workflows/deed-conformance.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
permissions:
contents: read
with:
require-files: false

k9:
name: K9-DEED conformance
uses: metadatastician/standards/.github/workflows/k9-conformance.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
permissions:
contents: read
pull-requests: read
with:
require-files: true
fail-on-indeterminate: false

hypatia:
name: Hypatia verdict grid
uses: metadatastician/standards/.github/workflows/hypatia-scan-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
permissions:
actions: read
contents: read
security-events: write
secrets:
HYPATIA_SCAN_PAT: ${{ secrets.HYPATIA_SCAN_PAT }}

verdict:
name: Post the fork governance summary
needs: [deed, k9, hypatia]
if: ${{ always() && github.event_name == 'pull_request' }}
uses: metadatastician/standards/.github/workflows/fork-governance-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
permissions:
contents: read
actions: read
pull-requests: write
Comment thread
hyperpolymath marked this conversation as resolved.
with:
pr-number: ${{ github.event.pull_request.number }}
deed-result: ${{ needs.deed.result }}
k9-result: ${{ needs.k9.result }}
k9-verdict: ${{ needs.k9.outputs.verdict }}
hypatia-result: ${{ needs.hypatia.result }}
hypatia-verdict: ${{ needs.hypatia.outputs.verdict }}
canon-ref: 1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
4 changes: 2 additions & 2 deletions .github/workflows/governance.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This workflow is managed by gh actions-lock.
# SPDX-License-Identifier: MPL-2.0
# governance.yml — single wrapper calling the shared estate governance bundle
# in hyperpolymath/standards instead of carrying per-repo copies.
# in metadatastician/standards instead of carrying per-repo copies.
#
# Replaces the per-repo governance scaffolding removed in the same commit:
# quality.yml, guix-nix-policy.yml, npm-bun-blocker.yml, ts-blocker.yml,
Expand Down Expand Up @@ -33,6 +33,6 @@ permissions:

jobs:
governance:
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@75bd5994470661a099df562d6d5ad2fe744dbd66
uses: metadatastician/standards/.github/workflows/governance-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
secrets:
HYPATIA_SCAN_PAT: ${{ secrets.HYPATIA_SCAN_PAT }}
21 changes: 14 additions & 7 deletions .github/workflows/hypatia-scan.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# This workflow is managed by gh actions-lock.
# SPDX-License-Identifier: MPL-2.0
# Thin wrapper around hyperpolymath/standards hypatia-scan-reusable.yml.
# Thin wrapper around metadatastician/standards hypatia-scan-reusable.yml.
# See standards#191 for the reusable's purpose and design.
#
# Pull requests run the Hypatia lane through fork-governance.yml, which posts
# its verdict grid in the PR comment. This workflow has no pull_request
# trigger so a PR does not scan twice and upload duplicate code-scanning
# results (standards 3-practice/fork-governance/ADOPTION.adoc §3).

name: Hypatia Security Scan

on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master]
schedule:
- cron: '0 0 * * 0'
workflow_dispatch:
Expand All @@ -19,14 +22,18 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

# Read-only at the top level; the job gets the one write it needs (uploading
# SARIF), which is all the reusable declares. No pull_request trigger, so no
# pull-requests permission.
permissions:
actions: read
contents: read
security-events: write
pull-requests: write

jobs:
hypatia:
uses: hyperpolymath/standards/.github/workflows/hypatia-scan-reusable.yml@75bd5994470661a099df562d6d5ad2fe744dbd66
permissions:
actions: read
contents: read
security-events: write
uses: metadatastician/standards/.github/workflows/hypatia-scan-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
secrets:
HYPATIA_SCAN_PAT: ${{ secrets.HYPATIA_SCAN_PAT }}
2 changes: 1 addition & 1 deletion .github/workflows/mirror.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ permissions:

jobs:
mirror:
uses: hyperpolymath/standards/.github/workflows/mirror-reusable.yml@75bd5994470661a099df562d6d5ad2fe744dbd66
uses: metadatastician/standards/.github/workflows/mirror-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
secrets:
GITLAB_SSH_KEY: ${{ secrets.GITLAB_SSH_KEY }}
BITBUCKET_SSH_KEY: ${{ secrets.BITBUCKET_SSH_KEY }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/rust-ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This workflow is managed by gh actions-lock.
# SPDX-License-Identifier: MPL-2.0
# Rust CI — thin wrapper calling the shared estate reusable in
# hyperpolymath/standards. Configure once, propagate everywhere.
# metadatastician/standards. Configure once, propagate everywhere.
# See: docs/CI-REUSABLE-WORKFLOWS.adoc in standards.
name: Rust CI

Expand All @@ -16,4 +16,4 @@ permissions:

jobs:
rust-ci:
uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@412a7031577112b31ee287cc6060179d638d6500
uses: metadatastician/standards/.github/workflows/rust-ci-reusable.yml@412a7031577112b31ee287cc6060179d638d6500
2 changes: 1 addition & 1 deletion .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ jobs:
contents: read
security-events: write
id-token: write
uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@75bd5994470661a099df562d6d5ad2fe744dbd66
uses: metadatastician/standards/.github/workflows/scorecard-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
2 changes: 1 addition & 1 deletion .github/workflows/secret-scanner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ jobs:
contents: read
pull-requests: write
actions: read
uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@75bd5994470661a099df562d6d5ad2fe744dbd66
uses: metadatastician/standards/.github/workflows/secret-scanner-reusable.yml@1fdc61c0c1c8f4c94324f956700d78d1ea9584a8
6 changes: 3 additions & 3 deletions .machine_readable/svc/k9/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@ K9 contractiles integrate with other RSR standards:

Use these as starting points for your own K9 components:

- `template-kennel.k9.ncl` - Pure data template
- `template-yard.k9.ncl` - Validated config template
- `template-hunt.k9.ncl` - Full execution template
- `template-kennel.k9.ncl.in` - Pure data template
- `template-yard.k9.ncl.in` - Validated config template
- `template-hunt.k9.ncl.in` - Full execution template

== Dependencies

Expand Down
Loading
Loading