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
43 changes: 22 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ A final answer can look correctly redacted after the system has already crossed

These failures span identity, ingestion, retrieval, ranking, caching, citations, and generation. Unit-testing any single layer is not enough. ContextFence makes the end-to-end boundary reviewable, repeatable, and portable across CI, scheduled staging checks, and incident reproduction.

## What is in the v0.1.0 release candidate
## What is in v0.1.0

| Capability | Status |
| --- | --- |
Expand All @@ -38,44 +38,42 @@ These failures span identity, ingestion, retrieval, ranking, caching, citations,
| OpenAI-compatible black-box target adapter | Shipped |
| Pretty, JSON, JUnit, SARIF, and portable HTML reports | Shipped |
| Severity thresholds, bounded concurrency, aggregate probe timeouts, and explicit exit codes | Shipped |
| Reusable GitHub Action source (exact-version Action after the first tag) | Ready in source |
| Reusable exact-version GitHub Action (`devectorio/contextfence@v0.1.0`) | Shipped |
| Interactive vulnerable/remediated browser lab | Shipped |
| Non-root production container and GitHub Pages deployment | Shipped |
| Framework-specific evidence adapters and connector fixtures | Roadmap |
| Hosted scheduling, history, alerts, and private control plane | Commercial direction |

Everything below is ready in source. The versioned npm package, Action reference, GitHub Release, and release image land together with the first trusted `v0.1.0` tag. ContextFence is an early release: the v1 contract is versioned, but backward-compatibility guarantees will firm up before `1.0.0`.
The `contextfence` package is published on npm, the `devectorio/contextfence@v0.1.0` Action resolves against the `v0.1.0` tag, and the demo container is on GHCR. ContextFence is an early release: the v1 contract is versioned, but backward-compatibility guarantees will firm up before `1.0.0`. The [release runbook](https://github.com/devectorio/contextfence/blob/main/docs/releasing.md) records how releases are built and attested.

## Quick start

Requirements: Node.js 22.14 or newer.

> [!NOTE]
> The first public npm release is being bootstrapped. Until `contextfence@0.1.0` is published, run the release-ready source directly as shown below. The [release runbook](https://github.com/devectorio/contextfence/blob/main/docs/releasing.md) records the one-time npm setup.

Clone the repository, build the local CLI, then run the network-free passing suite:
Install the CLI, fetch the network-free example suite, and run it:

```bash
git clone https://github.com/devectorio/contextfence.git
cd contextfence
corepack enable
corepack prepare pnpm@11.0.8 --activate
pnpm install --frozen-lockfile
pnpm build:package
node dist/package/cli.js test examples/contracts/mock.boundary.yaml
npm install -g contextfence@0.1.0
contextfence --version

curl -fsSLO https://raw.githubusercontent.com/devectorio/contextfence/v0.1.0/examples/contracts/mock.boundary.yaml
contextfence test mock.boundary.yaml
```

Inside the clone, the intentionally vulnerable cache-replay example shows a real failing report:
The intentionally vulnerable cache-replay example shows a real failing report:

```bash
node dist/package/cli.js test examples/contracts/vulnerable-cache.boundary.yaml
curl -fsSLO https://raw.githubusercontent.com/devectorio/contextfence/v0.1.0/examples/contracts/vulnerable-cache.boundary.yaml
contextfence test vulnerable-cache.boundary.yaml
# exits 1 after reporting critical boundary violations
```

To work from source instead, see [Development](#development).
Comment thread
devanchohan marked this conversation as resolved.

Validate a contract without contacting its target:

```bash
node dist/package/cli.js test boundary.yaml --dry-run
contextfence test mock.boundary.yaml --dry-run
```

See [the examples guide](https://github.com/devectorio/contextfence/blob/main/examples/README.md) for a passing mock suite, a deliberately failing cache fixture, an authorized staging template, and synthetic seed documents.
Expand Down Expand Up @@ -248,9 +246,6 @@ A manifest lists identities and, for each source, an `allow` list of the identit

## GitHub Actions

> [!NOTE]
> The composite Action below is ready for the first tagged npm release, but `devectorio/contextfence@v0.1.0` is not published yet. Until then, run the checked-out source CLI in your own workflow. Do not copy a versioned Action or npm command before the release runbook is complete.

For pull requests, run only a deterministic mock suite with no live credentials:

```yaml
Expand Down Expand Up @@ -296,7 +291,13 @@ Open [http://localhost:5173](http://localhost:5173).

## Container

The demo builds as a non-root static container on port `8080`. A versioned GHCR image will be available after the first tagged release; until then, build the exact source locally:
The demo builds as a non-root static container on port `8080` and versioned images are published to GHCR:

```bash
docker run --rm --read-only --tmpfs /tmp -p 8080:8080 ghcr.io/devectorio/contextfence:0.1.0
```

To build the exact source locally instead:

```bash
docker build -t contextfence:local .
Expand Down
2 changes: 1 addition & 1 deletion docs/github-action.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The repository ships a composite Action that installs one exact ContextFence npm version and runs a boundary contract. Keep the Action ref and its `version` input pinned during reviewable releases.

> **Release status:** the Action is wired for the first `v0.1.0` release, but that tag and the `contextfence@0.1.0` npm package do not exist yet. Follow [the release runbook](releasing.md) before using the versioned examples below. Until then, checkout the repository and run `node dist/package/cli.js` after building it.
> **Release status:** the `v0.1.0` tag and the `contextfence@0.1.0` npm package are published, so the versioned examples below work as written. Pin the Action to a tag or commit SHA you have reviewed.

## Pull request workflow with no secrets

Expand Down