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
14 changes: 11 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,17 @@ Retry logic (`@with_retry`) automatically retries on `RateLimitError`, `ServerEr

Triggers on push/PR to `main` and `develop`. Three jobs on Ubuntu, Python 3.11:

1. **lint** - `ruff check server/ tests/` + `mypy server/ --ignore-missing-imports`
2. **test** - `pytest tests/ -v` (with `AUTH0_JWT_TOKEN=test_token`)
3. **validate-mcp** - Verifies `server/main.py` starts without crashing
1. **lint** - Ruff checks the server, hosted API, export/smoke scripts, and
tests; mypy checks the server.
2. **test** - Runs all tests with full Git history because provenance tests
read the exact tool-owning commit.
3. **validate-mcp** - Regenerates and rejects drift in
`mcp-tools.public.json`, performs a real MCP `initialize` plus `tools/list`
exchange, and uploads the exact public contract.

A squash merge changes the owning commit ID. Regenerate the checked manifest on
the merged lineage before treating `main` as green. The export may have
identical tool bytes while the provenance revision still needs to change.
Comment on lines +121 to +131

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Do not modify CLAUDE.md.

This path is explicitly protected by the repository instructions. Revert Lines 121-131 and move the CI/provenance documentation to an allowed file such as README.md.

As per coding guidelines, files matching {@(CLAUDE|AGENTS|GEMINI).md,REPO-MAP.md,.env,.env.*} must not be modified.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CLAUDE.md` around lines 121 - 131, Revert the changes to CLAUDE.md, including
the added lint, test, validate-mcp, and squash-merge provenance documentation.
If this documentation is still required, move it to an allowed documentation
file such as README.md without modifying protected instruction files.

Source: Coding guidelines


## Scripts

Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,11 @@ machine-readable discovery contract. It is generated directly from the same
15-tool registry used by the hosted API and includes deterministic source,
transport, authentication, and schema metadata without credential values.

The manifest names the exact commit that owns every tool implementation. A
squash merge creates a new owning commit even when the exported tools do not
change, so regenerate and commit the manifest after the merge. A green
pull-request artifact proves its named branch revision, not the default branch.

## 🔬 Example Workflow

```
Expand Down
4 changes: 2 additions & 2 deletions mcp-tools.public.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
"environment_variable": "AUTH0_JWT_TOKEN",
"type": "bearer"
},
"generated_at": "2026-07-26T22:57:38-04:00",
"generated_at": "2026-07-28T16:40:28-04:00",
"manifest_version": 1,
"source": {
"repository": "Subconscious-ai/ghostshell",
"revision": "1654c170fcbbeee4c6f489c35f74fe8b6df5d624"
"revision": "c445240ebc06b172244c106f44ff3373d880c9eb"
},
"tool_count": 15,
"tools": [
Expand Down
Loading