Skip to content

Commit d96a2ce

Browse files
committed
Merge origin/main into claude/codeql-actions-language
Brings in #356 (AffineScript v2 spec registry) and #361 (estate workflow timeout sweep). Regenerated .machine_readable/REGISTRY.a2ml: main's committed registry was stale (9 spec source_hashes) because #361 edited files under tracked spec homes without running 'just registry'. The registry-verify gate on the PR-merge result now passes. PR payload remains the codeql 'actions' language addition. https://claude.ai/code/session_01XZhw6Fq27eoeyEB4LR3a2c
2 parents c14e1b1 + bec6161 commit d96a2ce

318 files changed

Lines changed: 933 additions & 67 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/boj-build.yml

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ permissions:
1818
jobs:
1919
trigger-boj:
2020
runs-on: ubuntu-latest
21+
timeout-minutes: 10
2122
if: ${{ vars.BOJ_SERVER_URL != '' || secrets.BOJ_SERVER_URL != '' }}
2223
steps:
2324
- name: Checkout
@@ -46,32 +47,3 @@ jobs:
4647
-H "Content-Type: application/json" \
4748
--data "$payload" \
4849
|| echo "BoJ server unreachable - skipping (non-fatal)"
49-
50-
- name: K9-SVC Validation
51-
run: |
52-
echo "Running K9-SVC contractile validation..."
53-
if [ -f .machine_readable/contractiles/must/Mustfile.a2ml ]; then
54-
echo "✅ Mustfile found - running validation"
55-
# Placeholder for actual K9 validation
56-
echo "K9 validation would run here"
57-
else
58-
echo "❌ Mustfile not found"
59-
exit 1
60-
fi
61-
62-
- name: Contractile Check
63-
run: |
64-
echo "Checking contractile completeness..."
65-
contractiles=("must" "trust" "dust" "lust" "adjust" "intend")
66-
missing=0
67-
for c in "${contractiles[@]}"; do
68-
if [ ! -f ".machine_readable/contractiles/$c/${c^}file.a2ml" ]; then
69-
echo "❌ Missing: $c"
70-
missing=$((missing + 1))
71-
fi
72-
done
73-
if [ $missing -gt 0 ]; then
74-
echo "❌ $missing contractiles missing"
75-
exit 1
76-
fi
77-
echo "✅ All contractiles present"

.machine_readable/REGISTRY.a2ml

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,20 @@
77
# Regenerate with: bash scripts/build-registry.sh (or: just registry)
88
# Source of truth: the SPECS table in scripts/build-registry.sh + the file tree.
99
#
10-
# Each entry's `source_hash` is a sha256 over `git ls-files -s <home>`, so it
11-
# changes whenever any tracked file under the spec's home changes. Hypatia rule
12-
# HYP-S006 (hypatia-rules/registry-staleness.a2ml) recomputes these and emits a
10+
# LOCAL entries: `source_hash` is a sha256 over `git ls-files -s <home>`, so it
11+
# changes whenever any tracked file under the spec's home changes.
12+
# EXTERNAL entries (kind = "external"): a verified POINTER to a spec whose SSOT
13+
# lives in another repo. `source_hash` is RECORDED (sentinel PENDING-FIRST-SYNC
14+
# until upstream lands), not computed locally — the offline generator emits it
15+
# verbatim. Hypatia rule HYP-S006 (hypatia-rules/registry-staleness.a2ml)
16+
# recomputes LOCAL hashes and re-fetches EXTERNAL canonical_urls, emitting a
1317
# `doc.drift` finding (strategy :review) when a recorded hash goes stale.
1418

1519
[registry]
1620
version = "1.0.0"
1721
generator = "scripts/build-registry.sh"
18-
hash_algorithm = "sha256(git ls-files -s <home>)"
19-
entry_count = 28
22+
hash_algorithm = "sha256(git ls-files -s <home>) # local; external: recorded pin"
23+
entry_count = 31
2024

2125
[registry.streams]
2226
foundation = "A2ML format family + K9 + contractiles (Stream 1)"
@@ -32,7 +36,7 @@ name = "A2ML — Attested Markup Language"
3236
stream = "foundation"
3337
home = "a2ml/"
3438
canonical_doc = "a2ml/README.adoc"
35-
source_hash = "sha256:ffda43ed07bed095c7623d3c6a1d38c8f17a6b9e4eebaebe3bfde5aff62bcfb0"
39+
source_hash = "sha256:2612d2f66eaefe1aedd2f783c748f85eec80cdc09147fb87593086041a670e07"
3640
route = "the typed/verified machine-readable document format"
3741

3842
[[spec]]
@@ -41,7 +45,7 @@ name = "K9 Self-Validating Components"
4145
stream = "foundation"
4246
home = "k9-svc/"
4347
canonical_doc = "k9-svc/README.adoc"
44-
source_hash = "sha256:6a9c2065fc29abdaaeef08c3e551f21c7408afd3c9a7cee4ed3e73460db443ab"
48+
source_hash = "sha256:c368125fbfb026c89d83b4b2b9d249024e83295e75ac49ab2889b8d7c1989dcd"
4549
route = "self-validating components with embedded contracts + deploy logic"
4650

4751
[[spec]]
@@ -59,7 +63,7 @@ name = "META.a2ml spec"
5963
stream = "foundation"
6064
home = "meta-a2ml/"
6165
canonical_doc = "meta-a2ml/README.adoc"
62-
source_hash = "sha256:2904f47d20a79723a830674fd9dc14105bf14911b5f700586480fe3a7a424542"
66+
source_hash = "sha256:fd41c8f7c2f4d2dd6dceb11bffaabc8905a9da33c2aa76ab8360da6ee9e3a0b4"
6367
route = "architecture decisions / governance metadata format"
6468

6569
[[spec]]
@@ -122,7 +126,7 @@ name = "0-AI Gatekeeper Protocol"
122126
stream = "protocol"
123127
home = "0-ai-gatekeeper-protocol/"
124128
canonical_doc = "0-ai-gatekeeper-protocol/README.adoc"
125-
source_hash = "sha256:e1893253df97b1b989b1ba8e6926548a9a06a6582ab8b9448438da0b4b3e4428"
129+
source_hash = "sha256:d3157a30fde9e78ab2374e7b6a8c733e6a9b21492ee426bdd26695522624b646"
126130
route = "the AI-agent entry/gating protocol behind 0-AI-MANIFEST"
127131

128132
[[spec]]
@@ -140,7 +144,7 @@ name = "AVOW Protocol"
140144
stream = "protocol"
141145
home = "avow-protocol/"
142146
canonical_doc = "avow-protocol/README.adoc"
143-
source_hash = "sha256:fc6011d8531fbe3d8fbc5ba0b819cea892d8e0dee7ccb31ef0a22b7d264a8263"
147+
source_hash = "sha256:556e42c1fc34c277a18b16bc2553f202ced9365b196d5c17649dda4a1a31e545"
144148
route = "consent-attested messaging / origin attribution"
145149

146150
[[spec]]
@@ -149,7 +153,7 @@ name = "AXEL Protocol"
149153
stream = "protocol"
150154
home = "axel-protocol/"
151155
canonical_doc = "axel-protocol/README.adoc"
152-
source_hash = "sha256:6884bcc4f845e05cb0ff0d6d77171707e74f6069512bcf233161a5d8de8fb704"
156+
source_hash = "sha256:2b20dddef2d9405f6eb35eaca0006e097bab31e88360b8cfed2fa239bebb911c"
153157
route = "age-gating + explicit-content enforcement"
154158

155159
[[spec]]
@@ -167,7 +171,7 @@ name = "Consent-Aware HTTP"
167171
stream = "protocol"
168172
home = "consent-aware-http/"
169173
canonical_doc = "consent-aware-http/README.adoc"
170-
source_hash = "sha256:e4165fa238b12e8515b985a21e7c7a9d7337627a484e74abe17fa000113a22e0"
174+
source_hash = "sha256:dbfc1d464ac7e9098d8115dda332eff832276b643bcea787a5f9b3900f09142b"
171175
route = "consent headers / AI-usage boundaries for HTTP"
172176

173177
[[spec]]
@@ -212,7 +216,7 @@ name = "RSR — Rhodium Standard Repositories"
212216
stream = "governance"
213217
home = "rhodium-standard-repositories/"
214218
canonical_doc = "rhodium-standard-repositories/README.adoc"
215-
source_hash = "sha256:9e10e92598a307d3e32f8af3dc8b5cdfdbbcfd6d78069498d6797dc1f0001e62"
219+
source_hash = "sha256:16937c23fe261963c80f611e827d987f924d87169e79a388958b1bd53a11d7cc"
216220
route = "the repository-compliance standard every repo is graded against"
217221

218222
[[spec]]
@@ -266,7 +270,7 @@ name = "Standards Hypatia Rules"
266270
stream = "integration"
267271
home = "hypatia-rules/"
268272
canonical_doc = "hypatia-rules/README.adoc"
269-
source_hash = "sha256:a63e95c5e43ced2ee13c58014175da156c71ab731f01449e3a61b3e2f33bbe52"
273+
source_hash = "sha256:797f42c3ac24cf610e1e0da0e9e019f3f0dce527d1f80857ab2adb85741159d3"
270274
route = "the dogfooding rules that scan THIS repo (incl. drift detection)"
271275

272276
[[spec]]
@@ -278,4 +282,59 @@ canonical_doc = "a2ml-templates/STATE.a2ml.v2.spec.adoc"
278282
source_hash = "sha256:5105bc72621b6214f1adecdf33a1dadf62d1d2b0afd0c2c6a48bbc5e24e9a454"
279283
route = "copy-in templates for the 7 A2ML files"
280284

285+
[[spec]]
286+
id = "affine-spec"
287+
name = "AffineScript .affine (faces / source documents)"
288+
stream = "language"
289+
kind = "external"
290+
spec_kind = "language-coupled"
291+
owning_repo = "hyperpolymath/affinescript"
292+
canonical_url = "https://github.com/hyperpolymath/affinescript/blob/main/spec/affine.adoc"
293+
version_pin = "v2.0.0"
294+
source_hash = "PENDING-FIRST-SYNC"
295+
source_hash_algo = "sha256"
296+
conformance_level = "draft"
297+
last_synced = "never"
298+
sync_status = "awaiting-upstream"
299+
media_type = "application/vnd.affinescript.affine"
300+
lineage = "affinescript:affine@2"
301+
route = "faces, canonical-lowering invariant, canonical islands, idiom packs, mimicry bindings, project face policy"
302+
303+
[[spec]]
304+
id = "affex-manifest"
305+
name = "AffineScript .affex (face-interop manifest)"
306+
stream = "language"
307+
kind = "external"
308+
spec_kind = "language-coupled"
309+
owning_repo = "hyperpolymath/affinescript"
310+
canonical_url = "https://github.com/hyperpolymath/affinescript/blob/main/spec/affex.adoc"
311+
version_pin = "v2.0.0"
312+
source_hash = "PENDING-FIRST-SYNC"
313+
source_hash_algo = "sha256"
314+
conformance_level = "draft"
315+
last_synced = "never"
316+
sync_status = "awaiting-upstream"
317+
media_type = "application/vnd.affinescript.affex"
318+
lineage = "affinescript:affex@2"
319+
route = "derived regenerable manifest; declaration heads not full bodies; format_version bumps independently"
320+
format_version = "2" # tracked independently of version_pin
321+
322+
[[spec]]
323+
id = "affmap-provenance"
324+
name = "AffineScript .affmap (provenance)"
325+
stream = "language"
326+
kind = "external"
327+
spec_kind = "language-coupled"
328+
owning_repo = "hyperpolymath/affinescript"
329+
canonical_url = "https://github.com/hyperpolymath/affinescript/blob/main/spec/affmap.adoc"
330+
version_pin = "v2.0.0"
331+
source_hash = "PENDING-FIRST-SYNC"
332+
source_hash_algo = "sha256"
333+
conformance_level = "draft"
334+
last_synced = "never"
335+
sync_status = "awaiting-upstream"
336+
media_type = "application/vnd.affinescript.affmap"
337+
lineage = "affinescript:affmap@2"
338+
route = "provenance format; own pointer for independent staleness tracking"
339+
281340
### End of REGISTRY.a2ml

0-ai-gatekeeper-protocol/.github/workflows/codeql.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ permissions: read-all
1515
jobs:
1616
analyze:
1717
runs-on: ubuntu-latest
18+
timeout-minutes: 30
1819
permissions:
1920
contents: read
2021
security-events: write

0-ai-gatekeeper-protocol/.github/workflows/hypatia-scan.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ jobs:
1717
scan:
1818
name: Hypatia Neurosymbolic Analysis
1919
runs-on: ubuntu-latest
20+
timeout-minutes: 20
2021

2122
steps:
2223
- name: Checkout repository

0-ai-gatekeeper-protocol/.github/workflows/instant-sync.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ permissions:
1414
jobs:
1515
dispatch:
1616
runs-on: ubuntu-latest
17+
timeout-minutes: 20
1718
steps:
1819
- name: Trigger Propagation
1920
uses: peter-evans/repository-dispatch@28959ce8df70de7be546dd1250a005dd32156697 # v3

0-ai-gatekeeper-protocol/.github/workflows/jekyll-gh-pages.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ jobs:
2626
# Build job
2727
build:
2828
runs-on: ubuntu-latest
29+
timeout-minutes: 30
2930
steps:
3031
- name: Checkout
3132
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
@@ -45,6 +46,7 @@ jobs:
4546
name: github-pages
4647
url: ${{ steps.deployment.outputs.page_url }}
4748
runs-on: ubuntu-latest
49+
timeout-minutes: 30
4850
needs: build
4951
steps:
5052
- name: Deploy to GitHub Pages

0-ai-gatekeeper-protocol/.github/workflows/jekyll.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ jobs:
3131
# Build job
3232
build:
3333
runs-on: ubuntu-latest
34+
timeout-minutes: 30
3435
steps:
3536
- name: Checkout
3637
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
@@ -59,6 +60,7 @@ jobs:
5960
name: github-pages
6061
url: ${{ steps.deployment.outputs.page_url }}
6162
runs-on: ubuntu-latest
63+
timeout-minutes: 30
6264
needs: build
6365
steps:
6466
- name: Deploy to GitHub Pages

0-ai-gatekeeper-protocol/.github/workflows/mirror.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ permissions: read-all
1212
jobs:
1313
mirror-gitlab:
1414
runs-on: ubuntu-latest
15+
timeout-minutes: 20
1516
if: vars.GITLAB_MIRROR_ENABLED == 'true'
1617
steps:
1718
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
@@ -30,6 +31,7 @@ jobs:
3031
3132
mirror-bitbucket:
3233
runs-on: ubuntu-latest
34+
timeout-minutes: 20
3335
if: vars.BITBUCKET_MIRROR_ENABLED == 'true'
3436
steps:
3537
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
@@ -48,6 +50,7 @@ jobs:
4850
4951
mirror-codeberg:
5052
runs-on: ubuntu-latest
53+
timeout-minutes: 20
5154
if: vars.CODEBERG_MIRROR_ENABLED == 'true'
5255
steps:
5356
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
@@ -66,6 +69,7 @@ jobs:
6669
6770
mirror-sourcehut:
6871
runs-on: ubuntu-latest
72+
timeout-minutes: 20
6973
if: vars.SOURCEHUT_MIRROR_ENABLED == 'true'
7074
steps:
7175
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
@@ -84,6 +88,7 @@ jobs:
8488
8589
mirror-disroot:
8690
runs-on: ubuntu-latest
91+
timeout-minutes: 20
8792
if: vars.DISROOT_MIRROR_ENABLED == 'true'
8893
steps:
8994
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
@@ -102,6 +107,7 @@ jobs:
102107
103108
mirror-gitea:
104109
runs-on: ubuntu-latest
110+
timeout-minutes: 20
105111
if: vars.GITEA_MIRROR_ENABLED == 'true'
106112
steps:
107113
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
@@ -120,6 +126,7 @@ jobs:
120126
121127
mirror-radicle:
122128
runs-on: ubuntu-latest
129+
timeout-minutes: 20
123130
if: vars.RADICLE_MIRROR_ENABLED == 'true'
124131
steps:
125132
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4

0-ai-gatekeeper-protocol/.github/workflows/scorecard-enforcer.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ permissions: read-all
1414
jobs:
1515
scorecard:
1616
runs-on: ubuntu-latest
17+
timeout-minutes: 20
1718
permissions:
1819
security-events: write
1920
id-token: write # For OIDC
@@ -52,6 +53,7 @@ jobs:
5253
# Check specific high-priority items
5354
check-critical:
5455
runs-on: ubuntu-latest
56+
timeout-minutes: 20
5557
steps:
5658
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4
5759

0-ai-gatekeeper-protocol/.github/workflows/scorecard.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ permissions: read-all
1212
jobs:
1313
analysis:
1414
runs-on: ubuntu-latest
15+
timeout-minutes: 20
1516
permissions:
1617
security-events: write
1718
id-token: write

0 commit comments

Comments
 (0)