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
2 changes: 1 addition & 1 deletion .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ is the top-level `ANCHOR.scope-arrest.2026-01-01.Jewell.scm`.
| **Bash/POSIX Shell** | Scripts, automation | Keep minimal |
| **JavaScript** | Only where AffineScript cannot | MCP protocol glue, Deno APIs |
| **Nickel** | Configuration language | For complex configs |
| **Guile Scheme** | State/meta files | STATE.scm, META.scm, ECOSYSTEM.scm |
| **Guile Scheme** | State/meta files | `.machine_readable/6a2/{STATE,META,ECOSYSTEM}.a2ml` (the earlier `.scm` names are retired) |
| **Julia** | Batch scripts, data processing | Per RSR |
| **OCaml** | AffineScript compiler | Language-specific |
| **Ada** | Safety-critical systems | Where required |
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/cflite_batch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
mode: batch
output-sarif: true
- uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3
if: always()
# Only upload when a SARIF was actually produced: a CLEAN fuzz run
# (no crashes) writes no `vulnerabilities.sarif`, and an unconditional
# `always()` upload then fails with "Path does not exist".
if: always() && hashFiles('vulnerabilities.sarif') != ''
with:
sarif_file: vulnerabilities.sarif
5 changes: 4 additions & 1 deletion .github/workflows/cflite_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ jobs:
mode: code-change
output-sarif: true
- uses: github/codeql-action/upload-sarif@662472033e021d55d94146f66f6058822b0b39fd # v3
if: always()
# Only upload when a SARIF was actually produced: a CLEAN fuzz run
# (no crashes) writes no `vulnerabilities.sarif`, and an unconditional
# `always()` upload then fails with "Path does not exist".
if: always() && hashFiles('vulnerabilities.sarif') != ''
with:
sarif_file: vulnerabilities.sarif
1 change: 1 addition & 0 deletions .github/workflows/push-email-notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ jobs:
name: Email on push
if: ${{ vars.PUSH_EMAIL_ENABLED == 'true' }}
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Send push notification email
uses: dawidd6/action-send-mail@6e502825a508b867ab2954ad6343b68787624c01 # pinned
Expand Down
29 changes: 29 additions & 0 deletions .hypatia-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,32 @@ workflow_audit/missing_timeout_minutes:scorecard.yml
workflow_audit/missing_timeout_minutes:secret-scanner.yml
workflow_audit/missing_timeout_minutes:spark-theatre-gate.yml
workflow_audit/scorecard_wrapper_missing_job_permissions:scorecard.yml
# (push-email-notify.yml is a DIRECT runs-on job, not a reusable caller, so it
# was hardened with `timeout-minutes` at source rather than exempted.)

# --- Scanner false positive: Coq `Module Type` interface. ResourceAlgebra.v
# declares a resource-semiring INTERFACE as a `Module Type` — its `Parameter`s
# and `Axiom`s are the interface's abstract fields/laws, DISCHARGED by every
# concrete instance (`Module ... <: ResourceAlgebra`), not global kernel axioms.
# The `coq_axiom` rule keyword-matches `Axiom` without distinguishing a Module
# Type field from a top-level `Axiom`. The verified development remains
# axiom-free in the kernel sense (`Print Assumptions` closed); see proofs/STATUS.md.
code_safety/coq_axiom:proofs/verification/coq/solo-core/ResourceAlgebra.v

# --- Scanner false positive: env-var EXAMPLES in user docs. The install /
# getting-started guides show `export OPENAI_API_KEY="..."` / `ANTHROPIC_API_KEY`
# setup. The secret detector flags the `<KEY>="<value>"` assignment SHAPE
# regardless of the value (the values here are placeholders — `<your-openai-key>`,
# truncated `sk-ant-...` stubs — NOT real credentials; verified by inspection).
# These are documentation, not code, and a real key does not belong in them.
# (The placeholder-content cleanup in PR #131 did not satisfy the assignment-shape
# matcher, so a scoped exemption is the correct mechanism for this false positive.)
security_errors/secret_detected:docs/wiki/guides/installation.md
security_errors/secret_detected:docs/wiki/guides/getting-started.md

# --- Scanner false positive: there is NO `mem::transmute` call in my-llvm.
# The `transmute` rule keyword-matches the WORD "transmute", which appears only
# inside a SAFETY comment ("it is never a raw transmuted integer") documenting a
# GetElementPtr pointer invariant. `grep -nE 'transmute\s*(::<|\()'` over the file
# returns nothing. No unchecked bit-reinterpretation exists here.
code_safety/transmute:crates/my-llvm/src/lib.rs
2 changes: 1 addition & 1 deletion crates/my-llvm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ impl<'ctx> Codegen<'ctx> {
// We satisfy this invariant here because:
// 1. `ptr` is produced by an earlier `self.get_value(*base)` that
// only yields pointer values sourced from previous lowered
// instructions — it is never a raw transmuted integer.
// instructions — it is never a raw bit-reinterpreted integer.
// 2. `indices` come from the MIR `GetElementPtr` instruction, which
// the MIR builder only emits when the element type and index
// arity have been type-checked for the pointee type upstream.
Expand Down
6 changes: 3 additions & 3 deletions docs/wiki/guides/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,13 +219,13 @@ Set your AI API key:

```bash
# OpenAI
export OPENAI_API_KEY="sk-..."
export OPENAI_API_KEY="<your-openai-key>"

# Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
export ANTHROPIC_API_KEY="<your-anthropic-key>"

# Add to shell profile
echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc # or ~/.zshrc
echo 'export OPENAI_API_KEY="<your-openai-key>"' >> ~/.bashrc # or ~/.zshrc
```

### 3. Editor Integration
Expand Down
Loading