Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5a350fe
docs: add repository audit (accuracy, currency, design, security)
chief-builder Oct 2, 2026
ffcff61
build: pin Node 24 LTS and pnpm 12, upgrade harness dependencies
chief-builder Oct 2, 2026
5a8da33
style: add ESLint and Prettier, fix lint findings
chief-builder Oct 2, 2026
d999386
fix(harness): enforce arm isolation and close credential leaks
chief-builder Oct 2, 2026
dd15e74
test: add unit and integration tests with coverage
chief-builder Oct 2, 2026
a6ed4ec
fix(runner): redact home paths in result JSON
chief-builder Oct 2, 2026
9450f9e
data: redact run artifacts and recompute stored metrics
chief-builder Oct 2, 2026
4916b83
docs(findings): regenerate tables and correct narratives against data
chief-builder Oct 2, 2026
f11b5c4
docs: rewrite README and update CLAUDE.md to match the code
chief-builder Oct 2, 2026
182f56f
docs(site): correct v2 pages against data and remove v1 pages
chief-builder Oct 2, 2026
e8b9ccd
chore: add license, security policy, and repo hygiene files
chief-builder Oct 2, 2026
2066769
ci: add CI, CodeQL, and Dependabot
chief-builder Oct 2, 2026
8d48efa
docs(audit): add Phase 2 addendum
chief-builder Oct 2, 2026
896e5c7
fix(fixture-server): address CodeQL path-injection and error exposure
chief-builder Oct 2, 2026
29b7e6a
fix(runner): let sandboxed gh verify TLS on macOS
chief-builder Oct 3, 2026
8a6cc40
fix(github): delete the sandbox repo when setup fails after creating it
chief-builder Oct 3, 2026
40521c2
fix(metrics,github): unparsed tool input and issue-create check lag
chief-builder Oct 3, 2026
8d113c0
feat(cli): recompute-metrics --tier for runs that mix github and gith…
chief-builder Oct 3, 2026
375363d
data: n5-v2 run under the new isolation
chief-builder Oct 3, 2026
8b80678
docs: lead with the n5-v2 results, keep n5 as history
chief-builder Oct 3, 2026
d1aa30f
docs(site): lead with n5-v2 results, keep n5 as a first-run section
chief-builder Oct 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copy to .env (gitignored). Loaded automatically by `pnpm harness`.
# Only needed for the GitHub experiment. Use fine-grained PATs scoped to a sandbox org.
GITHUB_SANDBOX_OWNER=
GITHUB_CONTROLLER_TOKEN=
GITHUB_AGENT_TOKEN=
# Tier 2 (github-rw) runs: pass this as GITHUB_AGENT_TOKEN for that command (see README).
GITHUB_AGENT_TOKEN_RW=
# GITHUB_HOST=api.github.com
15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: Bug report
about: Something in the harness doesn't work as documented
labels: bug
---

**What happened**

**What you expected**

**How to reproduce** (command, experiment, arm, task)

**Environment**: OS, `node -v`, `pnpm -v`, `claude --version`

Don't paste tokens or unredacted transcripts. Report security issues privately (see SECURITY.md).
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Report a security vulnerability
url: https://github.com/chief-builder/cli-vs-mcp/security/advisories/new
about: Please report security issues privately.
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
name: Feature or experiment idea
about: Suggest a new experiment, task, or harness feature
labels: enhancement
---

**What you'd like to measure or change**

**Why it matters**

**Tool surfaces involved** (CLI / MCP server, versions)
3 changes: 3 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Committed run artifacts include scripts written by the agent under test; they are data, not project code.
paths-ignore:
- experiments/*/runs/**
22 changes: 22 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
groups:
dev-tooling:
dependency-type: development
ignore:
# Experiment subject: upgrading changes what is measured. Bump together with a new run.
- dependency-name: '@playwright/cli'
# typescript-eslint does not support TypeScript 7 yet.
- dependency-name: typescript
update-types: ['version-update:semver-major']
# Keep in step with the pinned Node major (.nvmrc).
- dependency-name: '@types/node'
update-types: ['version-update:semver-major']
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
8 changes: 8 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## What and why

## How it was tested

- [ ] `pnpm check` passes
- [ ] `pnpm harness verify-arms` run (if arm tools or isolation changed)
- [ ] Run artifacts redacted (`pnpm harness redact-artifacts`) and reviewed (if runs are committed)
- [ ] Docs updated if claims, numbers, or commands changed
3 changes: 3 additions & 0 deletions .github/secret_scanning.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Token-shaped strings under test/ are fake fixtures for redaction and env-scrub tests.
paths-ignore:
- 'test/**'
58 changes: 58 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
check:
name: Lint, typecheck, test
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version-file: .nvmrc
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm lint
- run: pnpm format:check
- run: pnpm typecheck
- name: Test with coverage
run: pnpm test:coverage
- name: Coverage summary
if: always()
run: |
node -e '
const s = require("./coverage/coverage-summary.json").total;
const row = k => `| ${k} | ${s[k].pct}% (${s[k].covered}/${s[k].total}) |`;
console.log(["| Metric | Coverage |", "|---|---|", ...["lines","statements","functions","branches"].map(row)].join("\n"));
' >> "$GITHUB_STEP_SUMMARY"
# There is no compiled artifact (the harness runs from source via tsx); "build" checks the CLI loads.
- name: Build (CLI smoke)
run: pnpm harness --help

links:
name: Link check
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2.9.0
with:
args: --config lychee.toml --no-progress './*.md' './docs/**/*.html' './.github/**/*.md'
fail: true
40 changes: 40 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: CodeQL

on:
push:
branches: [main]
pull_request:
schedule:
- cron: '23 4 * * 1'

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [javascript-typescript, actions]
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
languages: ${{ matrix.language }}
build-mode: none
config-file: ./.github/codeql/codeql-config.yml
- uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
with:
category: /language:${{ matrix.language }}
12 changes: 11 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,14 @@ harness/dist/

# Local secrets — never commit GitHub tokens
.env
.env.local
.env.*
!.env.example

# Editors and local tool state
.vscode/
.idea/
*.swp
.claude/settings.local.json
npm-debug.log*
pnpm-debug.log*
coverage/
6 changes: 6 additions & 0 deletions .gitleaks.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[extend]
useDefault = true

[allowlist]
description = "Fake tokens used by redaction and env-scrub tests"
paths = ['''^test/''']
5 changes: 1 addition & 4 deletions .mcp.playwright.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
"playwright": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@playwright/mcp@0.0.75"
],
"args": ["-y", "@playwright/mcp@0.0.75"],
"env": {}
}
}
Expand Down
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
8 changes: 8 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules/
coverage/
pnpm-lock.yaml
experiments/*/runs/
experiments/*/fixtures/
docs/
.claude/
*.md
6 changes: 6 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"singleQuote": true,
"printWidth": 120,
"trailingComma": "all",
"arrowParens": "avoid"
}
Loading
Loading