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
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
/README.md @kalambet
/.github/CODEOWNERS @kalambet

# invariants — `.invariance` pointer page is owned by its upstream maintainer.
/invariants/invariance-framework.md @boorich @kalambet
# invariants — `.invariants` pointer page is owned by its upstream maintainer.
/invariants/invariants-framework.md @boorich @kalambet

# workflows — pointer pages into ChainSafe/infrastructure-general are
# owned by the Head of Infra alongside the curator.
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ dictionary.dic
.env.production.local
.idea

# Local PR notes (not for repo)
PR-COMMENT.md

npm-debug.log*
yarn-debug.log*
yarn-error.log*
Expand Down
172 changes: 92 additions & 80 deletions .lycheecache
Original file line number Diff line number Diff line change
@@ -1,96 +1,108 @@
https://github.com/ChainSafe/yarn-workspaces-typescript-template,200,1780908111
https://docs.canton.network/appdev/tooling/ide-setup,200,1780907131
https://docs.canton.network/appdev/modules/m6-limitations,200,1780907128
https://docs.canton.network/appdev/reference/daml-language-reference,200,1780907131
https://github.com/ChainSafe/canton-ci,200,1780907133
https://go.dev/doc/effective_go,200,1780907127
https://ziglang.org/documentation/master/#Style-Guide,200,1780907127
https://docs.canton.network/appdev/modules/m6-overview,200,1780907130
https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules,200,1780907128
https://github.com/jorgef/engineeringladders,200,1780907135
https://ziglang.org/learn/,200,1780907127
https://docs.canton.network/appdev/modules/m3-contract-templates,200,1780907129
https://github.com/ChainSafe/chainbridge-substrate,200,1780908111
https://github.com/uber-go/mock,200,1780907146
"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&family=Fraunces:ital,wght@0,300;0,700;1,300&display=swap",200,1780907127
https://github.com/ChainSafe/forest,200,1780908111
https://github.com/ChainSafe/ssz,200,1780907152
https://ziglang.org/documentation/master/,200,1780907127
https://ziglang.org/documentation/master/std/,200,1780907127
https://effective-rust.com/generics.html,200,1780907127
https://github.com/ChainSafe/mina-rs,200,1780907156
https://pkg.go.dev/std,200,1780907127
https://docs.canton.network/appdev/deep-dives/smart-contract-upgrade,200,1780907133
https://docs.canton.network/appdev/modules/m3-functional-programming,200,1780907129
https://docs.canton.network/appdev/modules/m3-standard-library,200,1780907128
https://docs.canton.network/appdev/modules/m3-choices,200,1780907129
https://docs.canton.network/appdev/modules/m3-working-with-time,200,1780907128
https://github.com/hanabi1224,200,1780907145
https://github.com/wemeetagain,200,1780907141
https://effective-rust.com/documentation.html,200,1780907127
https://github.com/ChainSafe/filsnap,200,1780907155
https://forest.chainsafe.io/,200,1780907128
https://github.com/matthewkeil,200,1780907146
https://docs.canton.network/appdev/modules/m3-design-patterns,200,1780907131
https://github.com/anthropics/skills,200,1780908111
https://github.com/golang/mock,200,1780907150
https://github.com/boorich/.invariants-starter-kit,200,1780910052
https://github.com/cla-assistant/cla-assistant,200,1780907147
https://doc.rust-lang.org/book/,200,1780907127
https://github.com/boorich,200,1780907136
https://docs.canton.network/appdev/modules/m6-overview,200,1780907130
https://docs.canton.network/appdev/modules/m6-limitations,200,1780907128
https://docs.canton.network/appdev/deep-dives/privacy-model,200,1780907131
https://docs.canton.network/appdev/tooling/development-tools-overview,200,1780907131
https://boorich.github.io/.invariants-starter-kit/#try,200,1780910052
https://github.com/ChainSafe/lodestar-z,200,1780907140
https://docs.canton.network/appdev/modules/m3-design-patterns,200,1780907131
https://boorich.github.io/.invariants-starter-kit/#spec,200,1780910052
https://ziglang.org/learn/build-system/,200,1780907127
https://github.com/ChainSafe/forest/blob/main/AI_POLICY.md,200,1780907134
https://golangci-lint.run/usage/linters/#enabled-by-default,200,1780907127
https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow,200,1780907127
https://chainsafe.io/,200,1780907128
https://docs.canton.network/appdev/modules/m3-contract-keys,200,1780907129
https://github.com/ChainSafe/eslint-config,200,1780907147
https://docs.canton.network/appdev/reference/daml-lf-reference,200,1780907131
https://effective-rust.com/,200,1780907127
https://github.com/salindne,200,1780908111
https://docs.canton.network/appdev/modules/m3-contract-templates,200,1780907129
https://www.notion.so/chainsafe/Core-Concepts-v1-0-1610247189c949fa9692de950518ac53,200,1780907127
https://github.com/ChainSafe/bls,200,1780907155
https://github.com/golang/mock,200,1780907150
https://www.notion.so/chainsafe/Educational-Budget-c0cc6c8da3c74c6ead5f866d2fced452,200,1780907127
https://github.com/sqhell,200,1780907140
https://gaming.chainsafe.io/,200,1780907128
https://docs.canton.network/appdev/deep-dives/privacy-model,200,1780907131
https://docs.canton.network/appdev/modules/m6-writing-first-upgrade,200,1780907130
https://github.com/sprintertech,200,1780907153
https://github.com/ChainSafe/yarn-workspaces-typescript-template,200,1780908111
https://github.com/LesnyRumcajs,200,1780907140
https://boorich.github.io/.invariants-starter-kit/#verdict,200,1780910052
https://docs.canton.network/appdev/modules/m3-contract-keys,200,1780907129
https://github.com/boorich/.invariants-starter-kit#lifecycle-of-assertions,200,1780910052
https://forest.chainsafe.io/,200,1780907128
https://docs.canton.network/,200,1780907127
https://go.dev/doc/effective_go,200,1780907127
https://github.com/boorich/.invariants-starter-kit/blob/master/README.md,200,1780910226
https://boristane.com/blog/how-i-use-claude-code/,200,1780907127
https://ziglang.org/,200,1780907127
https://github.com/kalambet,200,1780908110
https://effective-rust.com/semver.html,200,1780907127
https://daml-autopilot.chainsafe.io/,200,1780907127
https://docs.canton.network/appdev/modules/m3-interfaces,200,1780907130
https://docs.canton.network/appdev/tooling/development-tools-overview,200,1780907131
https://www.sprinter.tech/,200,1780907128
https://github.com/cla-assistant/cla-assistant,200,1780907147
https://github.com/ChainSafe/mina-rs,200,1780907156
https://effectivepython.com/,200,1780907127
https://docs.astral.sh/ruff/,200,1780907127
https://docs.canton.network/appdev/modules/m6-upgrade-compatibility,200,1780907128
https://github.com/canton-network/cf-docs,200,1780907139
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html,200,1780907127
https://github.com/ChainSafe/engineering-handbook/blob/main/README.md,200,1780907135
https://github.com/ChainSafe/forest,200,1780908111
https://docs.canton.network/appdev/modules/m3-working-with-time,200,1780907128
https://www.sprinter.tech/,200,1780907128
https://docs.canton.network/appdev/modules/m5-testing-strategies,200,1780907130
https://docs.canton.network/appdev/modules/m5-ci-cd-integration,200,1780907131
https://docs.canton.network/appdev/modules/m3-standard-library,200,1780907128
https://docs.canton.network/,200,1780907127
https://llmstxt.org/,200,1780907127
https://daml-autopilot.chainsafe.io/,200,1780907127
https://docs.canton.network/appdev/reference/daml-language-reference,200,1780907131
https://docs.canton.network/appdev/deep-dives/smart-contract-upgrade,200,1780907133
https://github.com/ChainSafe/ssz,200,1780907152
https://effective-rust.com/wildcard.html,200,1780907127
https://effective-rust.com/macros.html,200,1780907127
https://docs.astral.sh/uv/,200,1780907127
https://github.com/joshdougall,200,1780907133
https://github.com/sqhell,200,1780907140
https://github.com/ChainSafe/lodestar,200,1780907148
https://github.com/ghostty-org/ghostty,200,1780907134
https://github.com/ChainSafe/engineering-handbook/blob/main/README.md,200,1780907135
https://github.com/boorich/.invariants-starter-kit#naming-assertions,200,1780910052
https://github.com/wemeetagain,200,1780907141
https://docs.canton.network/appdev/modules/m3-testing,200,1780907130
https://github.com/boorich/.invariants-starter-kit/blob/master/.cursor/rules/conformance-agent.mdc,200,1780910219
https://docs.canton.network/appdev/modules/m7-security,200,1780907128
https://github.com/boorich/.invariants-starter-kit#versioning-and-migration,200,1780910052
https://github.com/kalambet,200,1780908110
https://docs.canton.network/appdev/reference/daml-lf-reference,200,1780907131
https://boorich.github.io/.invariants-starter-kit/#what,200,1780910052
https://github.com/ChainSafe/canton-ci#current-known-issues,200,1780907133
https://docs.canton.network/appdev/modules/m3-interfaces,200,1780907130
https://golangci-lint.run/usage/linters/,200,1780907127
https://docs.canton.network/appdev/modules/m3-dev-environment,200,1780907128
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html,200,1780907127
https://github.com/ChainSafe/gossamer,200,1780907146
https://docs.canton.network/appdev/modules/m3-language-fundamentals,200,1780907129
https://docs.canton.network/llms.txt,200,1780907127
https://ziglang.org/documentation/master/,200,1780907127
https://github.com/ChainSafe/forest/blob/main/AI_POLICY.md,200,1780907134
https://github.com/LesnyRumcajs,200,1780907140
https://docs.canton.network/appdev/modules/m6-writing-first-upgrade,200,1780907130
https://github.com/boorich/.invariants-starter-kit/blob/master/.invariants.example,200,1780910227
https://github.com/ChainSafe/filsnap,200,1780907155
https://github.com/ChainSafe/web3.js,200,1780907157
https://effective-rust.com/macros.html,200,1780907127
https://docs.canton.network/appdev/modules/m7-security,200,1780907128
https://docs.canton.network/appdev/modules/m3-functional-programming,200,1780907129
https://effective-rust.com/wildcard.html,200,1780907127
https://doc.rust-lang.org/book/,200,1780907127
https://docs.canton.network/appdev/modules/m3-dev-environment,200,1780907128
https://github.com/ChainSafe/canton-ci,200,1780907133
https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-tag-protection-rules,200,1780907128
https://docs.canton.network/appdev/modules/m5-ci-cd-integration,200,1780907131
https://github.com/ChainSafe/eslint-config,200,1780907147
https://ziglang.org/learn/,200,1780907127
https://boorich.github.io/.invariants-starter-kit/,200,1780910050
https://effective-rust.com/,200,1780907127
https://effective-rust.com/semver.html,200,1780907127
https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow,200,1780907127
https://llmstxt.org/,200,1780907127
"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&family=Fraunces:ital,wght@0,300;0,700;1,300&display=swap",200,1780907127
https://effectivepython.com/,200,1780907127
https://docs.canton.network/appdev/tooling/ide-setup,200,1780907131
https://github.com/bslatkin/effectivepython,200,1780907148
https://github.com/uber-go/mock,200,1780907146
https://gaming.chainsafe.io/,200,1780907128
https://github.com/hanabi1224,200,1780907145
https://github.com/salindne,200,1780908111
https://ziglang.org/documentation/master/#Style-Guide,200,1780907127
https://github.com/jorgef/engineeringladders,200,1780907135
https://docs.canton.network/appdev/modules/m6-upgrade-compatibility,200,1780907128
https://github.com/ChainSafe/chainbridge-substrate,200,1780908111
https://daml-autopilot.chainsafe.io/setup,200,1780907127
https://github.com/boorich,200,1780907136
https://www.notion.so/chainsafe/Core-Concepts-v1-0-1610247189c949fa9692de950518ac53,200,1780907127
https://github.com/ChainSafe/bls,200,1780907155
https://ziglang.org/learn/build-system/,200,1780907127
https://docs.canton.network/llms.txt,200,1780907127
https://chainsafe.io/,200,1780907128
https://github.com/matthewkeil,200,1780907146
https://github.com/sprintertech,200,1780907153
https://golangci-lint.run/,200,1780907127
https://github.com/bslatkin/effectivepython,200,1780907148
https://ziglang.org/documentation/master/std/,200,1780907127
https://github.com/joshdougall,200,1780907133
https://boristane.com/blog/how-i-use-claude-code/,200,1780907127
https://docs.astral.sh/uv/,200,1780907127
https://github.com/anthropics/skills,200,1780908111
https://effective-rust.com/documentation.html,200,1780907127
https://docs.astral.sh/ruff/,200,1780907127
https://docs.canton.network/appdev/modules/m3-authorization,200,1780907128
https://github.com/ChainSafe/lodestar,200,1780907148
https://github.com/ChainSafe/gossamer,200,1780907146
https://golangci-lint.run/usage/linters/,200,1780907127
https://docs.canton.network/appdev/modules/m3-testing,200,1780907130
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ You are an AI agent (Claude Code, Cursor, Continue, or other) operating against
## Repo map

- `operating-model/` — operator/agent contract, gates, escalation, model and tool selection, MCP and `llms.txt`, memory conventions. Load relevant pages before any non-trivial work.
- `invariants/` — the non-negotiables. Engineering invariants, deep links into Martin Maurer's `.invariance` framework, agent-era invariants (no silent edits, no fabricated APIs, no committed secrets).
- `invariants/` — the non-negotiables. Engineering invariants, deep links into Martin Maurer's `.invariants` framework, agent-era invariants (no silent edits, no fabricated APIs, no committed secrets).
- `workflows/` — PR authoring (delegates to the `chainsafe-research-plan-implement` skill), code review (operator-reviewing-agent and agent-reviewing-PR modes), repo & CI setup, testing & QA, infrastructure & DevOps (deep links into `ChainSafe/infrastructure-general`), incident response, release & deploy.
- `languages/<lang>/` — for each of Go, Rust, TypeScript, Solidity, Daml, Python, Zig: `architect.md`, `developer.md`, `reviewer.md`, plus shared `idioms.md` and `gotchas.md`. Architect pages deep-link into `.invariance`.
- `languages/<lang>/` — for each of Go, Rust, TypeScript, Solidity, Daml, Python, Zig: `architect.md`, `developer.md`, `reviewer.md`, plus shared `idioms.md` and `gotchas.md`. Architect pages deep-link into `.invariants`.
- `references/` — attribution, source pointers, contributors.
- `skills/` — packaged Anthropic Skills authored via `skill-creator`. Discoverable via `chainsafe.io/llms.txt` and via direct paths in this repo.
- `VISION.md` — ChainSafe mission, vision, and core values (company-wide). Read for org-wide context; not load-bearing for most agent tasks.
Expand All @@ -27,7 +27,7 @@ When picking up a task, load in this order:
2. `operating-model/collaborator-statement.md` (contract).
3. `operating-model/gates-and-escalation.md` (when to stop).
4. The most specific page for the task: a language role page, a workflow page, or a packaged skill in `skills/`.
5. Any external canonical source the chosen page deep-links into (`.invariance`, `infrastructure-general`) — fetch those targets, do not paraphrase from memory.
5. Any external canonical source the chosen page deep-links into (`.invariants`, `infrastructure-general`) — fetch those targets, do not paraphrase from memory.

Do not load everything by default. Pull the minimum needed for the task. Skills in `skills/` are scoped on purpose; prefer them when one matches.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The premise: engineering practices are a competitive asset, AI agents are now fi
The structure is:

- **`operating-model/`** — the operator/agent contract. How a human and an AI collaborator share responsibility for an output. Read this first.
- **`invariants/`** — the non-negotiables. Engineering invariants, the `.invariance` framework (deep-linked, not duplicated), and agent-era invariants.
- **`invariants/`** — the non-negotiables. Engineering invariants, the `.invariants` framework (deep-linked, not duplicated), and agent-era invariants.
- **`workflows/`** — PR authoring, code review, repo & CI setup, testing & QA, infrastructure & DevOps (deep-linked into `ChainSafe/infrastructure-general`), incident response, release & deploy.
- **`languages/`** — opinionated guidance per language ecosystem (Go, Rust, TypeScript, Solidity, Daml, Python, Zig) split into three roles: architect, developer, reviewer.
- **`references/`** — attribution, source pointers, contributors.
Expand Down
4 changes: 2 additions & 2 deletions invariants/agent-era-invariants.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ These extend the [Engineering Invariants](./engineering-invariants.md) — they

**Why.** Fabrication is the failure mode that costs the most to detect. It looks right; it sounds plausible; it compiles in some cases. The operator only catches it when the runtime trips or the missing thing is searched for and not found — both of which can happen days after the change ships.

**How it's checked.** The agent verifies references before naming them (file exists, function is defined, page is in the handbook). For external sources (`.invariance`, `infrastructure-general`), the agent fetches the target rather than paraphrasing from training. CI link checker catches broken external references.
**How it's checked.** The agent verifies references before naming them (file exists, function is defined, page is in the handbook). For external sources (`.invariants`, `infrastructure-general`), the agent fetches the target rather than paraphrasing from training. CI link checker catches broken external references.

**Override.** None. The operator cannot ask the agent to fabricate. If the operator says "just make something up that looks right," the agent refuses and escalates.

Expand Down Expand Up @@ -111,4 +111,4 @@ No single layer is sufficient. Agents can be misconfigured; CI can have gaps; re
- [`engineering-invariants.md`](./engineering-invariants.md) — the general engineering invariants these extend.
- [`../operating-model/collaborator-statement.md`](../operating-model/collaborator-statement.md) — the contract these invariants are the rule-form of. Refusal cases appear there as policy and here as invariants.
- [`../operating-model/gates-and-escalation.md`](../operating-model/gates-and-escalation.md) — gates can be approved; these invariants cannot, except for the explicit-override cases noted above.
- [`./invariance-framework.md`](./invariance-framework.md) — Martin Maurer's `.invariance` framework for architectural invariants. Domain-specific complement to this page.
- [`./invariants-framework.md`](./invariants-framework.md) — Martin Maurer's `.invariants` framework for architectural invariants. Domain-specific complement to this page.
Loading
Loading