Skip to content

Commit 9ad45ea

Browse files
chitcommitclaude
andauthored
fix: UI build, MCP test, and governance gate template drift (#89)
- Add react-is dependency (recharts peer dep) to fix broken UI build - Update MCP tool count test assertion from 48 to 50 to match actual - Sync governance template regex to fix #86 (txt false-positive) - Add audit_omit_dev input to reusable-governance-gates.yml for #88 - Enable audit_omit_dev for chittycommand (Worker repo) - Update CLAUDE.md tool count references to 50 Closes #86, closes #88 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 060a357 commit 9ad45ea

7 files changed

Lines changed: 24 additions & 13 deletions

File tree

.github/workflows/governance-gates.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ on:
88
jobs:
99
gates:
1010
uses: ./.github/workflows/reusable-governance-gates.yml
11+
with:
12+
audit_omit_dev: true
1113
secrets: inherit
1214

1315
notify-org-control-loop:

.github/workflows/reusable-governance-gates.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
required: false
88
type: boolean
99
default: true
10+
audit_omit_dev:
11+
required: false
12+
type: boolean
13+
default: false
1014

1115
permissions:
1216
contents: read
@@ -90,7 +94,7 @@ jobs:
9094
run: npm ci
9195
- name: Dependency Audit (High+)
9296
if: ${{ steps.lockfile.outputs.present == 'true' }}
93-
run: npm audit --audit-level=high
97+
run: npm audit --audit-level=high ${{ inputs.audit_omit_dev && '--omit=dev' || '' }}
9498
- name: Skip Dependency Audit (no package-lock.json)
9599
if: ${{ steps.lockfile.outputs.present != 'true' }}
96100
run: echo "No package-lock.json found; skipping dependency audit."

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ Three modes:
9292
- `src/lib/dispute-sync.ts` — Dispute ↔ Notion ↔ TriageAgent sync coordinator
9393
- `src/routes/bridge/index.ts` — Inter-service bridge (scrape, ledger, finance, Plaid)
9494
- `src/routes/bridge/disputes.ts` — Dispute-Notion manual sync bridge
95-
- `src/routes/mcp.ts` — MCP server for Claude integration (48 tools)
95+
- `src/routes/mcp.ts` — MCP server for Claude integration (50 tools)
9696
- `src/routes/meta.ts` — Public canon/schema/beacon + authenticated whoami
9797
- `src/routes/connect.ts` — ChittyConnect discovery proxy (rate-limited)
9898
- `src/routes/ledger.ts` — ChittyLedger evidence/custody passthrough
@@ -137,7 +137,7 @@ Example client-side MCP configuration (conceptual):
137137
}
138138
```
139139

140-
The server exposes 48 tools across 12 domains:
140+
The server exposes 50 tools across 12 domains:
141141

142142
**Core meta**`get_canon_info`, `get_registry_status`, `get_schema_refs`, `whoami`, `get_context_summary`
143143
**Financial**`query_obligations`, `query_accounts`, `query_disputes`, `get_recommendations`, `get_cash_position`, `get_cashflow_projections`, `query_revenue_sources`, `get_payment_plan`

templates/governance-baseline/.github/workflows/reusable-governance-gates.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ on:
77
required: false
88
type: boolean
99
default: true
10+
audit_omit_dev:
11+
required: false
12+
type: boolean
13+
default: false
1014

1115
permissions:
1216
contents: read
@@ -20,8 +24,8 @@ jobs:
2024
shell: bash
2125
run: |
2226
set -euo pipefail
23-
secrets_in_use="$(grep -RhoE 'secrets\.[A-Za-z_][A-Za-z0-9_]*' .github/workflows \
24-
| sed -E 's/.*secrets\.([A-Za-z_][A-Za-z0-9_]*).*/\1/' \
27+
secrets_in_use="$(grep -RhoE '\$\{\{\s*secrets(\.[A-Za-z_][A-Za-z0-9_]*|\['"'"'\"[A-Za-z_][A-Za-z0-9_]*'"'"'\"\])\s*\}\}' .github/workflows \
28+
| sed -E "s/.*secrets[.\['\"]([A-Za-z_][A-Za-z0-9_]*).*/\1/" \
2529
| sort -u || true)"
2630
2731
if [[ -z "${secrets_in_use}" ]]; then
@@ -90,7 +94,7 @@ jobs:
9094
run: npm ci
9195
- name: Dependency Audit (High+)
9296
if: ${{ steps.lockfile.outputs.present == 'true' }}
93-
run: npm audit --audit-level=high
97+
run: npm audit --audit-level=high ${{ inputs.audit_omit_dev && '--omit=dev' || '' }}
9498
- name: Skip Dependency Audit (no package-lock.json)
9599
if: ${{ steps.lockfile.outputs.present != 'true' }}
96100
run: echo "No package-lock.json found; skipping dependency audit."

tests/mcp.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,13 @@ describe('MCP — tools/list', () => {
141141
expect(tools.length).toBeGreaterThanOrEqual(1);
142142
});
143143

144-
it('exposes exactly 48 tools', async () => {
144+
it('exposes exactly 50 tools', async () => {
145145
const { post } = buildApp();
146146
const res = await post({ jsonrpc: '2.0', id: 1, method: 'tools/list' });
147147
const json = await res.json() as Record<string, unknown>;
148148
const result = json.result as Record<string, unknown>;
149149
const tools = result.tools as unknown[];
150-
expect(tools.length).toBe(48);
150+
expect(tools.length).toBe(50);
151151
});
152152

153153
it('each tool has a name and inputSchema', async () => {

ui/package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"react": "^18.3.0",
1515
"react-dom": "^18.3.0",
1616
"react-grid-layout": "^2.2.2",
17+
"react-is": "^19.2.5",
1718
"react-router-dom": "^6.23.0",
1819
"recharts": "^3.7.0",
1920
"tailwind-merge": "^2.3.0"

0 commit comments

Comments
 (0)