keelcore-standards 0.1.0__tar.gz
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.
Potentially problematic release.
This version of keelcore-standards might be problematic. Click here for more details.
- keelcore_standards-0.1.0/.github/CODEOWNERS +31 -0
- keelcore_standards-0.1.0/.github/dependabot.yml +42 -0
- keelcore_standards-0.1.0/.github/workflows/ci.yml +90 -0
- keelcore_standards-0.1.0/.github/workflows/publish.yml +110 -0
- keelcore_standards-0.1.0/.gitignore +49 -0
- keelcore_standards-0.1.0/.markdownlint.json +7 -0
- keelcore_standards-0.1.0/.nvmrc +1 -0
- keelcore_standards-0.1.0/.python-version +1 -0
- keelcore_standards-0.1.0/CHANGELOG.md +58 -0
- keelcore_standards-0.1.0/Makefile +210 -0
- keelcore_standards-0.1.0/PKG-INFO +6 -0
- keelcore_standards-0.1.0/README.md +99 -0
- keelcore_standards-0.1.0/VERSION +1 -0
- keelcore_standards-0.1.0/adapters/claude/CLAUDE.md +35 -0
- keelcore_standards-0.1.0/adapters/copilot/copilot-instructions.md +35 -0
- keelcore_standards-0.1.0/adapters/cursor/api-management.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/bash.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/ci.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/coding.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/observability.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/platform.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/runtime.mdc +6 -0
- keelcore_standards-0.1.0/adapters/cursor/security.mdc +6 -0
- keelcore_standards-0.1.0/docs/adr/0000-template.md +28 -0
- keelcore_standards-0.1.0/docs/adr/0001-standards-as-submodule-and-package.md +55 -0
- keelcore_standards-0.1.0/docs/adr/0002-coverage-baseline-in-repo.md +119 -0
- keelcore_standards-0.1.0/docs/adr/0003-architecture-governance-process.md +94 -0
- keelcore_standards-0.1.0/docs/adr/0004-workload-identity-spiffe-spire.md +100 -0
- keelcore_standards-0.1.0/docs/adr/0005-observability-opentelemetry.md +101 -0
- keelcore_standards-0.1.0/docs/adr/0006-opa-centralized-policy-engine.md +109 -0
- keelcore_standards-0.1.0/docs/adr/0007-zero-downtime-deployment.md +124 -0
- keelcore_standards-0.1.0/docs/adr/0008-rapid-key-rotation.md +127 -0
- keelcore_standards-0.1.0/docs/adr/0009-gitops-change-management.md +126 -0
- keelcore_standards-0.1.0/docs/break-glass.md +94 -0
- keelcore_standards-0.1.0/docs/rfc/RFC-0000-template.md +70 -0
- keelcore_standards-0.1.0/embed.go +11 -0
- keelcore_standards-0.1.0/go/cmd/materialize/main.go +48 -0
- keelcore_standards-0.1.0/go.mod +3 -0
- keelcore_standards-0.1.0/governance/ai/conduct.md +66 -0
- keelcore_standards-0.1.0/governance/api-management.md +185 -0
- keelcore_standards-0.1.0/governance/arb.md +110 -0
- keelcore_standards-0.1.0/governance/bash.md +147 -0
- keelcore_standards-0.1.0/governance/ci.md +496 -0
- keelcore_standards-0.1.0/governance/coding.md +156 -0
- keelcore_standards-0.1.0/governance/observability.md +158 -0
- keelcore_standards-0.1.0/governance/platform.md +167 -0
- keelcore_standards-0.1.0/governance/release-policy.md +171 -0
- keelcore_standards-0.1.0/governance/runtime.md +165 -0
- keelcore_standards-0.1.0/governance/security.md +149 -0
- keelcore_standards-0.1.0/governance/testing.md +100 -0
- keelcore_standards-0.1.0/package-lock.json +1313 -0
- keelcore_standards-0.1.0/package.json +23 -0
- keelcore_standards-0.1.0/pyproject.toml +13 -0
- keelcore_standards-0.1.0/scripts/check/adr-metadata.sh +111 -0
- keelcore_standards-0.1.0/scripts/check/governance-metadata.sh +101 -0
- keelcore_standards-0.1.0/scripts/check/rfc-metadata.sh +109 -0
- keelcore_standards-0.1.0/scripts/check-legal-drift.sh +84 -0
- keelcore_standards-0.1.0/scripts/ci/audit-make-targets.sh +140 -0
- keelcore_standards-0.1.0/scripts/ci/dco-check.sh +88 -0
- keelcore_standards-0.1.0/scripts/ci/pr-policy.sh +166 -0
- keelcore_standards-0.1.0/scripts/ci/secret-scan.sh +94 -0
- keelcore_standards-0.1.0/scripts/ci/setup-markdownlint.sh +53 -0
- keelcore_standards-0.1.0/scripts/ci/setup-shellcheck.sh +48 -0
- keelcore_standards-0.1.0/scripts/ci/setup-syft.sh +46 -0
- keelcore_standards-0.1.0/scripts/ci/verify-canonical-scripts.sh +120 -0
- keelcore_standards-0.1.0/scripts/format.sh +47 -0
- keelcore_standards-0.1.0/scripts/git_precommit.sh +30 -0
- keelcore_standards-0.1.0/scripts/lib/paths.sh +24 -0
- keelcore_standards-0.1.0/scripts/lint/markdown.sh +61 -0
- keelcore_standards-0.1.0/scripts/lint/md.sh +57 -0
- keelcore_standards-0.1.0/scripts/lint/newlines.sh +90 -0
- keelcore_standards-0.1.0/scripts/lint/shellcheck.sh +50 -0
- keelcore_standards-0.1.0/scripts/lint.sh +57 -0
- keelcore_standards-0.1.0/scripts/release/go-publish.sh +71 -0
- keelcore_standards-0.1.0/scripts/release/npm-publish.sh +47 -0
- keelcore_standards-0.1.0/scripts/release/pypi-publish.sh +55 -0
- keelcore_standards-0.1.0/scripts/release/sbom.sh +64 -0
- keelcore_standards-0.1.0/scripts/release/sign.sh +85 -0
- keelcore_standards-0.1.0/scripts/test/coverage-delta.sh +119 -0
- keelcore_standards-0.1.0/scripts/test/coverage.sh +73 -0
- keelcore_standards-0.1.0/scripts/verify/go.sh +53 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CODEOWNERS
|
|
2
|
+
# Changes to these paths require review from the designated owners.
|
|
3
|
+
# Owners are referenced by GitHub team or username.
|
|
4
|
+
# The last matching rule takes precedence.
|
|
5
|
+
|
|
6
|
+
# Default owner for everything
|
|
7
|
+
* @keelcore/platform-team
|
|
8
|
+
|
|
9
|
+
# CI workflows — security/infra review required
|
|
10
|
+
.github/workflows/ @keelcore/platform-infra
|
|
11
|
+
.github/CODEOWNERS @keelcore/platform-infra
|
|
12
|
+
.github/dependabot.yml @keelcore/platform-infra
|
|
13
|
+
|
|
14
|
+
# Scripts — infra review required; author cannot self-approve
|
|
15
|
+
scripts/ @keelcore/platform-infra
|
|
16
|
+
|
|
17
|
+
# Governance documents — ARB review required
|
|
18
|
+
governance/ @keelcore/arb
|
|
19
|
+
docs/adr/ @keelcore/arb
|
|
20
|
+
docs/rfc/ @keelcore/arb
|
|
21
|
+
docs/break-glass.md @keelcore/arb @keelcore/platform-infra
|
|
22
|
+
|
|
23
|
+
# Dependency manifests — infra review required
|
|
24
|
+
go.mod @keelcore/platform-infra
|
|
25
|
+
package.json @keelcore/platform-infra
|
|
26
|
+
package-lock.json @keelcore/platform-infra
|
|
27
|
+
pyproject.toml @keelcore/platform-infra
|
|
28
|
+
|
|
29
|
+
# Version and changelog — ARB review required
|
|
30
|
+
VERSION @keelcore/arb
|
|
31
|
+
CHANGELOG.md @keelcore/arb
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "github-actions"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
day: "monday"
|
|
8
|
+
commit-message:
|
|
9
|
+
prefix: "chore(ci)"
|
|
10
|
+
labels:
|
|
11
|
+
- "dependencies"
|
|
12
|
+
- "ci"
|
|
13
|
+
|
|
14
|
+
- package-ecosystem: "npm"
|
|
15
|
+
directory: "/"
|
|
16
|
+
schedule:
|
|
17
|
+
interval: "weekly"
|
|
18
|
+
day: "monday"
|
|
19
|
+
commit-message:
|
|
20
|
+
prefix: "chore(deps)"
|
|
21
|
+
labels:
|
|
22
|
+
- "dependencies"
|
|
23
|
+
|
|
24
|
+
- package-ecosystem: "gomod"
|
|
25
|
+
directory: "/"
|
|
26
|
+
schedule:
|
|
27
|
+
interval: "weekly"
|
|
28
|
+
day: "monday"
|
|
29
|
+
commit-message:
|
|
30
|
+
prefix: "chore(deps)"
|
|
31
|
+
labels:
|
|
32
|
+
- "dependencies"
|
|
33
|
+
|
|
34
|
+
- package-ecosystem: "pip"
|
|
35
|
+
directory: "/"
|
|
36
|
+
schedule:
|
|
37
|
+
interval: "weekly"
|
|
38
|
+
day: "monday"
|
|
39
|
+
commit-message:
|
|
40
|
+
prefix: "chore(deps)"
|
|
41
|
+
labels:
|
|
42
|
+
- "dependencies"
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
audit:
|
|
18
|
+
name: audit / makefile
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
timeout-minutes: 5
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
23
|
+
- run: make audit
|
|
24
|
+
|
|
25
|
+
pr-policy:
|
|
26
|
+
name: policy / pr
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
timeout-minutes: 5
|
|
29
|
+
if: github.event_name == 'pull_request'
|
|
30
|
+
env:
|
|
31
|
+
GITHUB_HEAD_REF: ${{ github.head_ref }}
|
|
32
|
+
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
33
|
+
PR_BODY: ${{ github.event.pull_request.body }}
|
|
34
|
+
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
37
|
+
with:
|
|
38
|
+
fetch-depth: 2
|
|
39
|
+
- run: make ci-pr-policy
|
|
40
|
+
|
|
41
|
+
check-governance:
|
|
42
|
+
name: check / governance metadata
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
timeout-minutes: 5
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
47
|
+
- run: make check-adr-metadata
|
|
48
|
+
- run: make check-governance-metadata
|
|
49
|
+
- run: make check-rfc-metadata
|
|
50
|
+
|
|
51
|
+
lint-markdown:
|
|
52
|
+
name: lint / markdown
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
timeout-minutes: 5
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
57
|
+
|
|
58
|
+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
|
59
|
+
with:
|
|
60
|
+
node-version-file: ".nvmrc"
|
|
61
|
+
cache: "npm"
|
|
62
|
+
cache-dependency-path: "package-lock.json"
|
|
63
|
+
|
|
64
|
+
- run: make setup-markdownlint
|
|
65
|
+
- run: make lint-newlines
|
|
66
|
+
- run: make lint-md
|
|
67
|
+
|
|
68
|
+
lint-bash:
|
|
69
|
+
name: lint / bash
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
timeout-minutes: 5
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
74
|
+
|
|
75
|
+
- run: make setup-shellcheck
|
|
76
|
+
- run: make lint-bash
|
|
77
|
+
|
|
78
|
+
verify-go:
|
|
79
|
+
name: verify / go module
|
|
80
|
+
runs-on: ubuntu-latest
|
|
81
|
+
timeout-minutes: 10
|
|
82
|
+
steps:
|
|
83
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
84
|
+
|
|
85
|
+
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
|
|
86
|
+
with:
|
|
87
|
+
go-version-file: go.mod
|
|
88
|
+
cache: true
|
|
89
|
+
|
|
90
|
+
- run: make verify-go
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
tag:
|
|
10
|
+
description: "Tag to publish (e.g. v1.2.0)"
|
|
11
|
+
required: true
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
sbom:
|
|
22
|
+
name: release / sbom
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
timeout-minutes: 10
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
29
|
+
|
|
30
|
+
- run: make setup-syft
|
|
31
|
+
- run: make release-sbom
|
|
32
|
+
|
|
33
|
+
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
|
|
34
|
+
with:
|
|
35
|
+
name: sbom
|
|
36
|
+
path: sbom.spdx.json
|
|
37
|
+
retention-days: 90
|
|
38
|
+
|
|
39
|
+
publish-npm:
|
|
40
|
+
name: publish / npm
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
timeout-minutes: 10
|
|
43
|
+
environment: npm-publish
|
|
44
|
+
permissions:
|
|
45
|
+
contents: read
|
|
46
|
+
id-token: write
|
|
47
|
+
attestations: write
|
|
48
|
+
steps:
|
|
49
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
50
|
+
|
|
51
|
+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
|
52
|
+
with:
|
|
53
|
+
node-version-file: ".nvmrc"
|
|
54
|
+
registry-url: "https://registry.npmjs.org"
|
|
55
|
+
cache: "npm"
|
|
56
|
+
cache-dependency-path: "package-lock.json"
|
|
57
|
+
|
|
58
|
+
- run: make release-npm
|
|
59
|
+
env:
|
|
60
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
61
|
+
|
|
62
|
+
- name: Attest npm provenance
|
|
63
|
+
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
|
|
64
|
+
with:
|
|
65
|
+
subject-path: "*.tgz"
|
|
66
|
+
|
|
67
|
+
publish-pypi:
|
|
68
|
+
name: publish / pypi
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
timeout-minutes: 10
|
|
71
|
+
environment: pypi-publish
|
|
72
|
+
permissions:
|
|
73
|
+
contents: read
|
|
74
|
+
id-token: write
|
|
75
|
+
attestations: write
|
|
76
|
+
steps:
|
|
77
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
78
|
+
|
|
79
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
80
|
+
with:
|
|
81
|
+
python-version-file: ".python-version"
|
|
82
|
+
|
|
83
|
+
- run: make release-pypi
|
|
84
|
+
|
|
85
|
+
- name: Publish to PyPI
|
|
86
|
+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|
|
87
|
+
|
|
88
|
+
- name: Attest PyPI provenance
|
|
89
|
+
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
|
|
90
|
+
with:
|
|
91
|
+
subject-path: "dist/*"
|
|
92
|
+
|
|
93
|
+
publish-go:
|
|
94
|
+
name: publish / go (pkg.go.dev)
|
|
95
|
+
runs-on: ubuntu-latest
|
|
96
|
+
timeout-minutes: 10
|
|
97
|
+
environment: go-publish
|
|
98
|
+
permissions:
|
|
99
|
+
contents: read
|
|
100
|
+
steps:
|
|
101
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
102
|
+
|
|
103
|
+
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
|
|
104
|
+
with:
|
|
105
|
+
go-version-file: go.mod
|
|
106
|
+
|
|
107
|
+
- run: make release-go
|
|
108
|
+
env:
|
|
109
|
+
GITHUB_REF_NAME: ${{ github.ref_name }}
|
|
110
|
+
INPUT_TAG: ${{ inputs.tag }}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# IDE — JetBrains
|
|
2
|
+
.idea/
|
|
3
|
+
*.iml
|
|
4
|
+
*.iws
|
|
5
|
+
*.ipr
|
|
6
|
+
|
|
7
|
+
# IDE — VS Code
|
|
8
|
+
.vscode/
|
|
9
|
+
|
|
10
|
+
# IDE — Cursor
|
|
11
|
+
.cursor/
|
|
12
|
+
|
|
13
|
+
# IDE — Vim / Neovim
|
|
14
|
+
*.swp
|
|
15
|
+
*.swo
|
|
16
|
+
*~
|
|
17
|
+
|
|
18
|
+
# Node
|
|
19
|
+
node_modules/
|
|
20
|
+
npm-debug.log*
|
|
21
|
+
yarn-debug.log*
|
|
22
|
+
yarn-error.log*
|
|
23
|
+
|
|
24
|
+
# Python
|
|
25
|
+
__pycache__/
|
|
26
|
+
*.py[cod]
|
|
27
|
+
*.pyo
|
|
28
|
+
*.egg
|
|
29
|
+
*.egg-info/
|
|
30
|
+
dist/
|
|
31
|
+
build/
|
|
32
|
+
.venv/
|
|
33
|
+
venv/
|
|
34
|
+
.Python
|
|
35
|
+
|
|
36
|
+
# Go
|
|
37
|
+
/vendor/
|
|
38
|
+
|
|
39
|
+
# Script log files (written by scripts/lint.sh, scripts/release/*.sh, etc.)
|
|
40
|
+
/tmp/*.log
|
|
41
|
+
|
|
42
|
+
# macOS
|
|
43
|
+
.DS_Store
|
|
44
|
+
.AppleDouble
|
|
45
|
+
.LSOverride
|
|
46
|
+
|
|
47
|
+
# Materialize output (consumers gitignore this in their own repos)
|
|
48
|
+
.standards/
|
|
49
|
+
.claude
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
20
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to keelcore/standards are documented here.
|
|
4
|
+
|
|
5
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
6
|
+
Versioning follows [Semantic Versioning](https://semver.org/).
|
|
7
|
+
|
|
8
|
+
Breaking changes (governance removals, renamed files): major bump.
|
|
9
|
+
New governance or expanded rules: minor bump.
|
|
10
|
+
Corrections, clarifications, metadata: patch bump.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## [Unreleased]
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Architecture Review Board governance (`governance/arb.md`) — membership, quorum, tie-breaking, escalation
|
|
19
|
+
- RFC workflow (`docs/rfc/RFC-0000-template.md`) — full Draft → Implemented lifecycle
|
|
20
|
+
- DACI metadata fields on ADR template and all existing ADRs (Driver, Approver, Contributors, Informed, Supersedes, Superseded By)
|
|
21
|
+
- Maturity metadata on all governance standards (Draft | Recommended | Required | Deprecated)
|
|
22
|
+
- Automated ADR metadata enforcement (`scripts/check/adr-metadata.sh`)
|
|
23
|
+
- Automated governance metadata enforcement (`scripts/check/governance-metadata.sh`)
|
|
24
|
+
- RFC metadata enforcement (`scripts/check/rfc-metadata.sh`)
|
|
25
|
+
- PR policy gate (`scripts/ci/pr-policy.sh`) — commit format, branch naming, description completeness, secret scan
|
|
26
|
+
- Break-glass procedure (`docs/break-glass.md`)
|
|
27
|
+
- Supply chain: artifact signing (`scripts/release/sign.sh`), SBOM generation (`scripts/release/sbom.sh`)
|
|
28
|
+
- CI: SLSA provenance attestation, artifact signing, SBOM, and SHA256SUMS in publish workflow
|
|
29
|
+
- CI: concurrency control (cancel superseded PR runs), npm caching, environment protection on publish jobs
|
|
30
|
+
- `.github/CODEOWNERS` — coverage for workflows, scripts, governance, and manifests
|
|
31
|
+
- `.github/dependabot.yml` — automated action SHA pin updates
|
|
32
|
+
- `VERSION` file as single source of truth for standards version
|
|
33
|
+
|
|
34
|
+
## [0.1.0] - 2026-03-09
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- Initial scaffold: `governance/coding.md`, `governance/ci.md`, `governance/bash.md`
|
|
39
|
+
- Platform architecture standards (`governance/platform.md`)
|
|
40
|
+
- Observability standards (`governance/observability.md`)
|
|
41
|
+
- Security and IAM standards (`governance/security.md`)
|
|
42
|
+
- Runtime and orchestration standards (`governance/runtime.md`)
|
|
43
|
+
- API management standards (`governance/api-management.md`)
|
|
44
|
+
- ADR template (`docs/adr/0000-template.md`)
|
|
45
|
+
- ADR-0001: Standards distributed as submodule and language package
|
|
46
|
+
- ADR-0002: Coverage baseline stored in repository
|
|
47
|
+
- ADR-0003: Architecture governance via DACI, RFC, and ARB
|
|
48
|
+
- ADR-0004: SPIFFE/SPIRE for workload identity
|
|
49
|
+
- ADR-0005: OpenTelemetry as unified observability framework
|
|
50
|
+
- ADR-0006: OPA as centralized authorization policy engine
|
|
51
|
+
- ADR-0007: Zero-downtime deployment via blue/green and canary
|
|
52
|
+
- ADR-0008: Rapid key rotation with 5-minute platform SLA
|
|
53
|
+
- ADR-0009: GitOps as declarative change management mechanism
|
|
54
|
+
- Multi-ecosystem publishing (Go, npm, PyPI) via GitHub Actions
|
|
55
|
+
- Tool adapters for Claude Code, Cursor, and GitHub Copilot
|
|
56
|
+
- Release scripts: `npm-publish.sh`, `pypi-publish.sh`, `go-publish.sh`
|
|
57
|
+
- Lint scripts: `markdown.sh`, `shellcheck.sh`
|
|
58
|
+
- Verify script: `go.sh`
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# keelcore/standards — Master Orchestrator
|
|
2
|
+
# All CI concerns are invoked through this file.
|
|
3
|
+
# Workflow YAML calls `make <target>`; developers call the same targets locally.
|
|
4
|
+
|
|
5
|
+
.PHONY: build lint lint-newlines lint-md lint-bash lint-markdown \
|
|
6
|
+
test unit-test integration-test clean audit \
|
|
7
|
+
ci-pr-policy ci-secret-scan ci-dco ci-coverage-delta \
|
|
8
|
+
coverage check-adr-metadata check-governance-metadata check-rfc-metadata \
|
|
9
|
+
check-legal-drift release-sbom release-sign release-go release-npm release-pypi \
|
|
10
|
+
setup-markdownlint setup-shellcheck setup-syft verify-canonical verify-go \
|
|
11
|
+
format lint-all pre-commit help
|
|
12
|
+
|
|
13
|
+
## Universal canonical targets (language-independent; mandated by CI standards)
|
|
14
|
+
|
|
15
|
+
build:
|
|
16
|
+
@echo "✅ Nothing to build (standards is a documentation repository)"
|
|
17
|
+
|
|
18
|
+
lint: lint-newlines lint-md lint-bash
|
|
19
|
+
|
|
20
|
+
test: unit-test integration-test
|
|
21
|
+
|
|
22
|
+
unit-test:
|
|
23
|
+
@echo "✅ No unit tests (standards is a documentation repository)"
|
|
24
|
+
|
|
25
|
+
integration-test:
|
|
26
|
+
@echo "✅ No integration tests (standards is a documentation repository)"
|
|
27
|
+
|
|
28
|
+
clean:
|
|
29
|
+
@echo "🧹 Nothing to clean (standards is a documentation repository)"
|
|
30
|
+
|
|
31
|
+
## Audit
|
|
32
|
+
|
|
33
|
+
audit:
|
|
34
|
+
@echo "🔍 Running CI/Makefile audit..."
|
|
35
|
+
./scripts/ci/audit-make-targets.sh
|
|
36
|
+
|
|
37
|
+
## Lint targets
|
|
38
|
+
|
|
39
|
+
lint-newlines:
|
|
40
|
+
@echo "🔍 Checking trailing newlines..."
|
|
41
|
+
./scripts/lint/newlines.sh
|
|
42
|
+
|
|
43
|
+
lint-md:
|
|
44
|
+
@echo "🔍 Running markdown lint (markdownlint-cli)..."
|
|
45
|
+
./scripts/lint/md.sh
|
|
46
|
+
|
|
47
|
+
lint-bash:
|
|
48
|
+
@echo "🔍 Running shellcheck..."
|
|
49
|
+
./scripts/lint/shellcheck.sh
|
|
50
|
+
|
|
51
|
+
lint-markdown:
|
|
52
|
+
@echo "🔍 Running markdown lint (markdownlint-cli2)..."
|
|
53
|
+
./scripts/lint/markdown.sh
|
|
54
|
+
|
|
55
|
+
## Check targets
|
|
56
|
+
|
|
57
|
+
check-adr-metadata:
|
|
58
|
+
@echo "🔍 Checking ADR metadata..."
|
|
59
|
+
./scripts/check/adr-metadata.sh
|
|
60
|
+
|
|
61
|
+
check-governance-metadata:
|
|
62
|
+
@echo "🔍 Checking governance metadata..."
|
|
63
|
+
./scripts/check/governance-metadata.sh
|
|
64
|
+
|
|
65
|
+
check-rfc-metadata:
|
|
66
|
+
@echo "🔍 Checking RFC metadata..."
|
|
67
|
+
./scripts/check/rfc-metadata.sh
|
|
68
|
+
|
|
69
|
+
check-legal-drift:
|
|
70
|
+
@echo "⚖️ Checking legal file drift..."
|
|
71
|
+
./scripts/check-legal-drift.sh
|
|
72
|
+
|
|
73
|
+
## CI gate targets
|
|
74
|
+
|
|
75
|
+
ci-pr-policy:
|
|
76
|
+
@echo "🔍 Running PR policy check..."
|
|
77
|
+
./scripts/ci/pr-policy.sh
|
|
78
|
+
|
|
79
|
+
ci-secret-scan:
|
|
80
|
+
@echo "🔍 Running secret scan..."
|
|
81
|
+
./scripts/ci/secret-scan.sh
|
|
82
|
+
|
|
83
|
+
ci-dco:
|
|
84
|
+
@echo "🔍 Running DCO sign-off check..."
|
|
85
|
+
./scripts/ci/dco-check.sh
|
|
86
|
+
|
|
87
|
+
ci-coverage-delta:
|
|
88
|
+
@echo "📊 Checking coverage delta..."
|
|
89
|
+
./scripts/test/coverage-delta.sh
|
|
90
|
+
|
|
91
|
+
## Coverage
|
|
92
|
+
|
|
93
|
+
coverage:
|
|
94
|
+
@echo "📊 Generating coverage report..."
|
|
95
|
+
./scripts/test/coverage.sh
|
|
96
|
+
|
|
97
|
+
## Release targets
|
|
98
|
+
|
|
99
|
+
release-sbom:
|
|
100
|
+
@echo "📋 Generating SBOM..."
|
|
101
|
+
./scripts/release/sbom.sh
|
|
102
|
+
|
|
103
|
+
release-sign:
|
|
104
|
+
@echo "✍️ Signing artifacts..."
|
|
105
|
+
./scripts/release/sign.sh
|
|
106
|
+
|
|
107
|
+
release-go:
|
|
108
|
+
@echo "🚀 Publishing Go module..."
|
|
109
|
+
./scripts/release/go-publish.sh
|
|
110
|
+
|
|
111
|
+
release-npm:
|
|
112
|
+
@echo "🚀 Publishing npm package..."
|
|
113
|
+
./scripts/release/npm-publish.sh
|
|
114
|
+
|
|
115
|
+
release-pypi:
|
|
116
|
+
@echo "🚀 Publishing PyPI package..."
|
|
117
|
+
./scripts/release/pypi-publish.sh
|
|
118
|
+
|
|
119
|
+
## Setup targets
|
|
120
|
+
|
|
121
|
+
setup-markdownlint:
|
|
122
|
+
@echo "🔧 Installing markdownlint-cli..."
|
|
123
|
+
./scripts/ci/setup-markdownlint.sh
|
|
124
|
+
|
|
125
|
+
setup-shellcheck:
|
|
126
|
+
@echo "🔧 Installing shellcheck..."
|
|
127
|
+
./scripts/ci/setup-shellcheck.sh
|
|
128
|
+
|
|
129
|
+
setup-syft:
|
|
130
|
+
@echo "🔧 Installing syft..."
|
|
131
|
+
./scripts/ci/setup-syft.sh
|
|
132
|
+
|
|
133
|
+
## Canonical script verification
|
|
134
|
+
|
|
135
|
+
verify-canonical:
|
|
136
|
+
@echo "🔍 Verifying canonical scripts in downstream repo (REPO=<path>)..."
|
|
137
|
+
./scripts/ci/verify-canonical-scripts.sh $(REPO)
|
|
138
|
+
|
|
139
|
+
## Verify targets
|
|
140
|
+
|
|
141
|
+
verify-go:
|
|
142
|
+
@echo "🔍 Verifying Go module..."
|
|
143
|
+
./scripts/verify/go.sh
|
|
144
|
+
|
|
145
|
+
## Utility targets
|
|
146
|
+
|
|
147
|
+
format:
|
|
148
|
+
@echo "🖊️ Formatting repository..."
|
|
149
|
+
./scripts/format.sh
|
|
150
|
+
|
|
151
|
+
lint-all:
|
|
152
|
+
@echo "🔍 Running all linters (full suite)..."
|
|
153
|
+
./scripts/lint.sh
|
|
154
|
+
|
|
155
|
+
pre-commit:
|
|
156
|
+
@echo "🪝 Running pre-commit checks..."
|
|
157
|
+
./scripts/git_precommit.sh
|
|
158
|
+
|
|
159
|
+
## Help
|
|
160
|
+
|
|
161
|
+
help:
|
|
162
|
+
@echo "keelcore/standards Build System"
|
|
163
|
+
@echo "Usage: make [target]"
|
|
164
|
+
@echo ""
|
|
165
|
+
@echo "Universal targets (canonical; language-independent):"
|
|
166
|
+
@echo " build No-op (documentation repository)"
|
|
167
|
+
@echo " lint lint-newlines + lint-md + lint-bash"
|
|
168
|
+
@echo " test unit-test + integration-test"
|
|
169
|
+
@echo " unit-test No-op (documentation repository)"
|
|
170
|
+
@echo " integration-test No-op (documentation repository)"
|
|
171
|
+
@echo " clean No-op (documentation repository)"
|
|
172
|
+
@echo " audit CI/Makefile standards compliance audit"
|
|
173
|
+
@echo ""
|
|
174
|
+
@echo "Lint:"
|
|
175
|
+
@echo " lint-newlines Check trailing newlines (.md .sh .go .yml etc.)"
|
|
176
|
+
@echo " lint-md markdownlint-cli check (canonical; from keel)"
|
|
177
|
+
@echo " lint-bash shellcheck on all scripts"
|
|
178
|
+
@echo " lint-markdown markdownlint-cli2 check (standards native)"
|
|
179
|
+
@echo ""
|
|
180
|
+
@echo "Checks:"
|
|
181
|
+
@echo " check-adr-metadata Validate ADR metadata fields"
|
|
182
|
+
@echo " check-governance-metadata Validate governance file metadata"
|
|
183
|
+
@echo " check-rfc-metadata Validate RFC metadata fields"
|
|
184
|
+
@echo " check-legal-drift Verify legal files match source of truth"
|
|
185
|
+
@echo ""
|
|
186
|
+
@echo "CI Gates:"
|
|
187
|
+
@echo " ci-pr-policy PR policy gate"
|
|
188
|
+
@echo " ci-secret-scan Secret scan (gitleaks)"
|
|
189
|
+
@echo " ci-dco DCO Signed-off-by check"
|
|
190
|
+
@echo " ci-coverage-delta Coverage delta gate"
|
|
191
|
+
@echo " coverage Generate coverage report"
|
|
192
|
+
@echo ""
|
|
193
|
+
@echo "Release:"
|
|
194
|
+
@echo " release-sbom Generate SPDX SBOM"
|
|
195
|
+
@echo " release-sign Sign artifacts (cosign)"
|
|
196
|
+
@echo " release-go Publish Go module"
|
|
197
|
+
@echo " release-npm Publish npm package"
|
|
198
|
+
@echo " release-pypi Publish PyPI package"
|
|
199
|
+
@echo ""
|
|
200
|
+
@echo "Setup:"
|
|
201
|
+
@echo " setup-markdownlint Install markdownlint-cli"
|
|
202
|
+
@echo ""
|
|
203
|
+
@echo "Verification:"
|
|
204
|
+
@echo " verify-canonical REPO=<path> Check downstream repo scripts match standards"
|
|
205
|
+
@echo " verify-go Build and vet the Go module"
|
|
206
|
+
@echo ""
|
|
207
|
+
@echo "Utilities:"
|
|
208
|
+
@echo " format Run all formatters"
|
|
209
|
+
@echo " lint-all Run full linter suite (scripts/lint.sh)"
|
|
210
|
+
@echo " pre-commit Run pre-commit checks"
|