diff --git a/.claude/PROJECT.md b/.claude/PROJECT.md index b6def45..67bc22f 100644 --- a/.claude/PROJECT.md +++ b/.claude/PROJECT.md @@ -1,31 +1,31 @@ -# Claude Integrations - Claude Code Instructions +# CI Infrastructure - Claude Code Instructions -This repository contains integrations for Claude Code and other AI assistants. +This repository contains CI/CD infrastructure configurations and scripts. ## Project Structure ``` -claude-integrations/ +ci/ ├── .claude/ # AI assistant instructions ├── .git/ # Version control ├── .gitignore # Git ignore rules ├── .editorconfig # Editor configuration -└── ... # Integration files +└── ... # CI configuration files ``` ## Build Commands -Refer to individual integration documentation. +Refer to individual configuration files for build commands. ## Coding Conventions - Follow hyperpolymath standards -- Prefer declarative configurations -- Document all integration points -- Test all integrations in isolation +- All configuration in version control +- Use declarative configurations where possible +- Document all non-obvious decisions ## Security -- No hardcoded API keys -- All credentials through secure configuration -- Minimal permissions principle +- No hardcoded secrets +- All secrets through environment variables or secret management +- SHA-pinned dependencies where applicable diff --git a/gitlab-bridge/src/forges/ForgeAdapter.res b/gitlab-bridge/src/forges/ForgeAdapter.res index 5b7c8fb..ca0688e 100644 --- a/gitlab-bridge/src/forges/ForgeAdapter.res +++ b/gitlab-bridge/src/forges/ForgeAdapter.res @@ -71,9 +71,6 @@ type repository = { fullName: string, description: option, defaultBranch: string, - // `private` is a reserved keyword in ReScript 12, so the variant - // tag is quoted. JSON serialization remains "private" — no - // wire-format change. visibility: [#public | #"private" | #internal], url: string, cloneUrl: string, diff --git a/gitlab-bridge/tests/Setup.res b/gitlab-bridge/tests/Setup.res index efd3c9e..08541df 100644 --- a/gitlab-bridge/tests/Setup.res +++ b/gitlab-bridge/tests/Setup.res @@ -6,19 +6,11 @@ * Clears cached environment variables before each test suite. */ -// External bindings for reading process.env. Setters are not needed -// here — the `%%raw` block below uses JS `delete` directly to clear -// env vars, which is what tests actually call. (The previous version -// also declared `@set @scope(("process", "env")) external …` setters -// for each variable; those were unused and rejected by ReScript 12's -// stricter handling of `@set` + nested `@scope`. Removing them fixes -// the build break flagged in PR #10's "out of scope" notes.) -@val @scope(("process", "env")) external gitlabToken: option = "GITLAB_TOKEN" -@val @scope(("process", "env")) external gitlabUrl: option = "GITLAB_URL" -@val @scope(("process", "env")) external anthropicApiKey: option = "ANTHROPIC_API_KEY" -@val @scope(("process", "env")) external webhookSecret: option = "WEBHOOK_SECRET" - -// We use JS interop to delete env vars +// Env-var deletion is done entirely via %%raw below; no ReScript externals +// are needed. The previously-declared @val and @set externals on +// process.env were unused (no caller in this file or anywhere else) and +// the @set form was incompatible with rescript@12's tightened external +// validation, so they have been removed. %%raw(` import { beforeEach } from "vitest";