Skip to content

Commit bef0756

Browse files
jdsikaclaude
andcommitted
fix(ci): resolve CI failures, add Vale to pre-commit, fix broken links
Root cause analysis of CI failures: 1. Broken action SHAs in link_checker.yml and markdown_linter.yml 2. Prettier version skew (pre-commit mirrors-prettier vs project npm) 3. Vale prose lint not in pre-commit hooks — errors only caught in CI 4. Pre-existing Vale errors across all EVES specs blocking all PRs 5. Broken external links (Pinata docs, ontology repos, GitLab TZIP) CI workflow fixes: - Update lychee-action to v2.8.0 and markdownlint-cli2-action to v23.0.0 - Add .lycheeignore for forward refs, placeholder URLs, and flaky sites Pre-commit improvements: - Replace mirrors-prettier (v4.0.0-alpha.8) with local hook using npx prettier --check to match CI version and avoid unstaged files - Add Vale hook (errata-ai/vale v3.9.6) to catch prose lint locally Vale configuration: - Disable rules that conflict with spec conventions: Google.Quotes, Google.EmDash, Google.Spacing, Google.Exclamation, proselint.Annotations, proselint.Typography - Add e.V. to vocabulary accept list Cross-spec prose lint fixes (all EVES specs): - Replace all "e.g." with "for example" (Google.Latin rule) - Replace all "i.e." with "that is" (Google.Latin rule) - Fix "specifications specifications" typo in EVES/README.md Broken link fixes: - Pinata: docs.pinata.cloud/web3 → /api-reference (reorg) - Ontology repos: GAIA-X4PLC-AAD → ASCS-eV/ontology-management-base - GitLab TZIP: gitlab.com/tzip → gitlab.com/tezos (namespace change) - Tezos research: research.tezos.com → docs.tezos.com (domain offline) Add CLAUDE.md with project setup and quality check instructions. Signed-off-by: jdsika <carlo.van-driesten@vdl.digital> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 07430a6 commit bef0756

18 files changed

Lines changed: 136 additions & 43 deletions

File tree

.github/styles/Vocab/EVES/accept.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,4 @@ DPoP
2929
SPARQL
3030
SSI
3131
Catena-X
32+
e\.V\.

.github/workflows/link_checker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
restore-keys: lychee-cache-
2525

2626
- name: Check links
27-
uses: lycheeverse/lychee-action@f81112d0d2814ded911bd23e3beaa9dda9f8ca55 # v2.3.0
27+
uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0
2828
with:
2929
args: >-
3030
--cache

.github/workflows/markdown_linter.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1616

1717
- name: Run markdownlint
18-
uses: DavidAnson/markdownlint-cli2-action@db4f21d957a58a0515c3e6b0fb16b2a13e97a1e6 # v19.1.0
18+
uses: DavidAnson/markdownlint-cli2-action@ce4853d43830c74c1753b39f3cf40f71c2031eb9 # v23.0.0
1919
with:
2020
config: .markdownlint.json
2121
globs: "**/*.md"

.lycheeignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Forward references to EVES specs not yet written
2+
EVES-009/eves-009.md
3+
4+
# Placeholder/example URLs used in spec text (not real endpoints)
5+
https://assets.envited-x.net/
6+
https://metadata.envited-x.net/
7+
https://ipfs.envited-x.net/
8+
9+
# GitLab blocks automated requests with 403
10+
https://gitlab.com/tezos/tzip/

.pre-commit-config.yaml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,16 @@ repos:
1515
- id: markdownlint
1616
args: ["--config", ".markdownlint.json"]
1717

18-
- repo: https://github.com/pre-commit/mirrors-prettier
19-
rev: v4.0.0-alpha.8
18+
- repo: local
2019
hooks:
2120
- id: prettier
21+
name: prettier
22+
entry: npx prettier --check --ignore-path .prettierignore
23+
language: system
2224
types_or: [markdown, json, yaml]
23-
args: ["--prose-wrap", "preserve"]
25+
26+
- repo: https://github.com/errata-ai/vale
27+
rev: v3.9.6
28+
hooks:
29+
- id: vale
30+
types: [markdown]

.vale.ini

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,15 @@ BasedOnStyles = Vale, Google, proselint, write-good
1010
Google.Acronyms = NO
1111
Google.We = NO
1212
Vale.Spelling = NO
13+
# EVES specs quote field names like "name", "tags" — comma placement doesn't apply
14+
Google.Quotes = NO
15+
# NOTE/TODO in blockquotes is standard RFC/spec style
16+
proselint.Annotations = NO
17+
# EVES uses spaced em-dashes (` — `) consistently
18+
Google.EmDash = NO
19+
# Filenames contain "..." which is not prose typography
20+
proselint.Typography = NO
21+
# "e.V." is the German legal abbreviation (eingetragener Verein)
22+
Google.Spacing = NO
23+
# Occasional emphasis is acceptable in specs
24+
Google.Exclamation = NO

CLAUDE.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# CLAUDE.md
2+
3+
## Project overview
4+
5+
EVES (ENVITED-X Verifiable Ecosystem Specifications) defines standards for the ENVITED-X Data Space.
6+
Each specification lives in `EVES/EVES-NNN/eves-nnn.md` with associated examples, schemas, and assets.
7+
8+
## Setup
9+
10+
```sh
11+
npm install
12+
pre-commit install
13+
```
14+
15+
## Quality checks
16+
17+
Before every commit, run:
18+
19+
```sh
20+
make lint # markdownlint + frontmatter validation
21+
make format-check # Prettier formatting
22+
```
23+
24+
Pre-commit hooks enforce: trailing whitespace, end-of-file newlines, valid YAML/JSON, no merge conflicts, markdownlint, Prettier formatting (check mode), and Vale prose linting.
25+
26+
If Prettier fails, run `npx prettier --write .` to auto-format, then re-stage and commit.
27+
28+
CI additionally runs link checking (`link_checker.yml`).
29+
30+
### Vale prose lint rules
31+
32+
The project uses Vale with Google, proselint, and write-good styles (see `.vale.ini`).
33+
Several rules are disabled because they conflict with technical specification conventions (see comments in `.vale.ini`).
34+
35+
Key active rule that causes CI failures:
36+
37+
- Use "for example" instead of "e.g." or "i.e." (`Google.Latin`)
38+
39+
To run Vale locally: install [Vale](https://vale.sh/docs/install), then `vale sync && vale EVES/`.
40+
41+
### Markdown lint rules
42+
43+
See `.markdownlint.json`. Maximum line length is 300 characters (tables and code blocks are exempt).
44+
HTML elements `<a>`, `<br>`, `<img>`, `<sup>` are allowed.
45+
46+
## File conventions
47+
48+
- Specification documents use YAML frontmatter with fields: `eves-identifier`, `title`, `author`, `status`, `type`, `created`, `requires`, `replaces`
49+
- JSON schemas go in `eves-nnn-schemas/` directories (excluded from Prettier in `.prettierignore`)
50+
- Example files go in `example/` directories (excluded from Prettier in `.prettierignore`)
51+
- Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) with scope: `feat(EVES-003): ...`, `fix(ci): ...`
52+
- Branches follow `feat/eves-nnn-description` naming
53+
54+
## Ontology references
55+
56+
The ENVITED-X ontologies are maintained in [ontology-management-base](https://github.com/ASCS-eV/ontology-management-base).
57+
Current versions: `envited-x/v3/`, `manifest/v5/`, `hdmap/v6/`.
58+
59+
The Gaia-X ontology follows the Loire (25.11) release. Key naming:
60+
61+
- `envited-x:ResourceDescription` (subclass of `gx:VirtualResource`) carries the GX compliance metadata
62+
- `gx:name`, `gx:description` are used in the `envited-x:ResourceDescriptionShape` SHACL
63+
- `gx:license`, `gx:copyrightOwnedBy`, `gx:resourcePolicy` remain GX-native properties

EVES/EVES-001/eves-001.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Each EVES must pass through the following stages:
6464
- **Future Changes**: Only changes designated as a minor editorial update by Editors are allowed in this stage.
6565

6666
5. **Deferred/Rejected**
67-
- **Deferred**: The EVES is paused for future discussion (e.g., lack of resources, overshadowed by another proposal).
67+
- **Deferred**: The EVES is paused for future discussion (for example, lack of resources, overshadowed by another proposal).
6868
- **Rejected**: Consensus cannot be reached, or the specification is fundamentally misaligned with ENVITED-X goals.
6969

7070
6. **Superseded**
@@ -85,20 +85,20 @@ Each EVES must pass through the following stages:
8585
### 2. EVES Numbering
8686

8787
- EVES documents follow sequential numbering, starting from EVES-001, EVES-002, and so on.
88-
- Numbers must be unique and stable once assigned (i.e., no recycling of identifiers).
88+
- Numbers must be unique and stable once assigned (that is, no recycling of identifiers).
8989

9090
### 3. EVES Types
9191

9292
Each EVES must declare one of the following **type** fields in its YAML header:
9393

9494
1. **Standards**
95-
- Defines technical specifications or protocols recommended for ecosystem adoption (e.g., data formats, APIs).
95+
- Defines technical specifications or protocols recommended for ecosystem adoption (for example, data formats, APIs).
9696

9797
2. **Informational**
9898
- Provides context, best practices, or reference material without strict normative requirements.
9999

100100
3. **Process**
101-
- Outlines procedural or governance rules applicable to the ENVITED community (e.g., this EVES-001).
101+
- Outlines procedural or governance rules applicable to the ENVITED community (for example, this EVES-001).
102102

103103
### 4. Roles and Responsibilities
104104

@@ -121,7 +121,7 @@ Each EVES must declare one of the following **type** fields in its YAML header:
121121

122122
- A subset of EVES Editors with voting rights as full ASCS e.V. ENVITED members.
123123
- Provide the final decision on moving an EVES from Candidate to Final.
124-
- Must meet quorum requirements (e.g., at least two Approvers) to grant or deny Final status.
124+
- Must meet quorum requirements (for example, at least two Approvers) to grant or deny Final status.
125125

126126
### 4.5 Conflict Resolution
127127

EVES/EVES-002/eves-002.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ The ENVITED-X Data Space is built on the following core modules:
3636

3737
- **Purpose**:
3838
- Establish trust by verifying user and organization identities.
39-
- Enable permission management (e.g., membership validation, terms of service acceptance).
39+
- Enable permission management (for example, membership validation, terms of service acceptance).
4040
- **Key Features**:
4141
- Credentials are issued via [SimpulseID](https://identity.ascs.digital) and stored in W3C-compliant wallets like [Altme](https://altme.io).
42-
- Future support for contract-based credentials (e.g., purchase or download permissions).
42+
- Future support for contract-based credentials (for example, purchase or download permissions).
4343
- **Standards**:
4444
- Gaia-X Trust Framework.
4545
- W3C Verifiable Credentials and DIDs.
@@ -52,7 +52,7 @@ The ENVITED-X Data Space is built on the following core modules:
5252
- Enable real-time credential checks during system interactions.
5353
- **Functionality**:
5454
- Tracks the **uuid** of credentials to ensure privacy.
55-
- Manages credential statuses (e.g., active/inactive for revocation).
55+
- Manages credential statuses (for example, active/inactive for revocation).
5656
- **Use Cases**:
5757
- Credential validation during login.
5858
- Whitelisting users for minting and accessing assets.
@@ -99,11 +99,11 @@ The interaction between modules can be summarized as follows:
9999
1. **Credential Issuance**:
100100
- A user or organization requests a credential via SimpulseID following the process in EVES-008.
101101
- Credential metadata includes identity, permissions, and additional attributes.
102-
- Credential is stored in a wallet (e.g., Altme) and referenced by uuid in the registry contract.
102+
- Credential is stored in a wallet (for example, Altme) and referenced by uuid in the registry contract.
103103

104104
2. **Login and Validation**:
105105
- User logs in to ENVITED-X.
106-
- The system validates the credential (e.g., membership status) via the registry contract.
106+
- The system validates the credential (for example, membership status) via the registry contract.
107107

108108
3. **Asset Registration**:
109109
- User uploads simulation assets to ENVITED-X following the process in EVES-003.
@@ -142,7 +142,7 @@ Future EVES will provide detailed specifications for each module.
142142

143143
1. [SimpulseID](https://identity.ascs.digital)
144144
2. [Altme Wallet](https://altme.io)
145-
3. [Tezos FA2.1 Standard](https://gitlab.com/tzip/tzip/-/blob/master/proposals/tzip-21/tzip-21.md)
145+
3. [Tezos FA2.1 Standard](https://gitlab.com/tezos/tzip/-/blob/master/proposals/tzip-21/tzip-21.md)
146146
4. [Etherlink Bridge](https://www.etherlinkbridge.com/bridge)
147147
5. [EVES-003: ENVITED Asset Definition and Upload Process](../EVES-003/eves-003.md)
148148
6. [Gaia-X Trust Framework](https://docs.gaia-x.eu/policy-rules-committee/compliance-document/24.11/)

EVES/EVES-004/eves-004.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ This specification distinguishes between two formal roles: **Editors** and **App
5050

5151
#### 1.5 Standards Enforcers (Editors)
5252

53-
- Verify that proposals align with overarching governance and standards (e.g., Gaia-X, W3C, Tezos TZIPs).
53+
- Verify that proposals align with overarching governance and standards (for example, Gaia-X, W3C, Tezos TZIPs).
5454
- Ensure interoperability within the ENVITED ecosystem.
5555

5656
#### 1.6 Approvers
@@ -135,7 +135,7 @@ Approvers operate on top of the Editors’ responsibilities, taking an active ro
135135

136136
1. **Application Process**:
137137
- Anyone interested in becoming an EVES Editor can open a discussion in the ENVITED GitHub organization.
138-
- Tag the current editors group (e.g., `@eves-editors`) in the discussion for visibility.
138+
- Tag the current editors group (for example, `@eves-editors`) in the discussion for visibility.
139139

140140
2. **Eligibility**:
141141
- Applicants MUST demonstrate familiarity with the EVES process, template, and standards as defined in [EVES-001](../EVES-001/eves-001.md) and this document.
@@ -155,7 +155,7 @@ The following points clarify limits to the Editor and Approver roles:
155155
1. **Creation of New EVES**
156156
- Neither Editors nor Approvers drive the creation of new EVES; the community identifies needs, and authors propose solutions.
157157
2. **Technical Designs or Implementations**
158-
- They do not craft or own the underlying technical designs (e.g., code libraries).
158+
- They do not craft or own the underlying technical designs (for example, code libraries).
159159
The community or EVES authors lead the design, while Editors and Approvers review it for feasibility.
160160
3. **Promotion or Adoption**
161161
- They are not tasked with marketing or ensuring the adoption of specific EVES.

0 commit comments

Comments
 (0)