Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2458f91
refactor(directory): separate gateway demo UI
Aug 10, 2026
11897dd
Merge main into agent/separate-gateway-demo
randomblocker Oct 13, 2026
a4eba9a
fix(directory): require a public, verbatim origin in check:deploy-config
randomblocker Oct 13, 2026
0da7e61
fix(directory): accept only globally routable origins in check:deploy…
randomblocker Oct 13, 2026
e83e95a
Merge branch 'main' into agent/separate-gateway-demo
randomblocker Oct 13, 2026
a474c16
docs: use CI's only placeholder origin in the local workflow guide
randomblocker Oct 14, 2026
1815169
fix(directory): reject port 0 in check:deploy-config
randomblocker Oct 14, 2026
058903c
test(directory): load /discover again in the landing-page browser test
randomblocker Oct 14, 2026
b0a6a88
fix(directory): align check:deploy-config with the special-use regist…
randomblocker Oct 14, 2026
6c0d4b8
fix(directory): pin Railway's Node release through package.json engines
randomblocker Oct 14, 2026
9e393a2
test(directory): keep the origin CLI tests hermetic and pin exact fla…
randomblocker Oct 14, 2026
3dbdbb2
docs(directory): correct the SDK token, fail-closed exceptions and re…
randomblocker Oct 14, 2026
d6cd693
fix(directory): fail the Railway build and start unless Node is the .…
randomblocker Oct 15, 2026
8b5af69
fix(directory): pin every IANA special-purpose row and verify the pins
randomblocker Oct 15, 2026
52906a5
test(directory): pin the gateway separation and the homepage summary
randomblocker Oct 15, 2026
d1a470a
docs(directory): drop stale SDK-auth and live-report leftovers
randomblocker Oct 15, 2026
7f030b4
fix(directory): pin the special-use names to IANA's registry
randomblocker Oct 15, 2026
4e2153b
test(directory): run the Node runtime check's failure path
randomblocker Oct 15, 2026
55858c2
test(directory): render the homepage against stored catalogs
randomblocker Oct 15, 2026
9ce534b
Merge pull request #84 from DACS-Agent-commerce/agent/separate-gatewa…
randomblocker Oct 15, 2026
d2765e4
Hide testnet Directory rates and numeric reputation
randomblocker Oct 15, 2026
06cbc14
Cover testnet no-rate projections and pages with offline fixtures
randomblocker Oct 15, 2026
7a1c6cb
Merge C-01 removal and preserve observed homepage wording
randomblocker Oct 15, 2026
5ec687d
Allowlist TP-1 metric projections and cover cached history gaps
randomblocker Oct 15, 2026
d549315
Build with local fonts and narrow the SDK identity import
randomblocker Oct 15, 2026
a6a011b
Preserve SDK catalog compatibility for unavailable hints
randomblocker Oct 15, 2026
423b1fa
Clarify later reputation contract wording
randomblocker Oct 15, 2026
4f044f9
Void SB-2 settlement collisions that have no binding authority
randomblocker Oct 16, 2026
b74542d
Pin the TP-1 contract and close the remaining projection gaps
randomblocker Oct 16, 2026
de70e1c
Project SB-1 settlement ids and share the SB-2 rule with listing hints
randomblocker Oct 16, 2026
b7989ca
Rebuild cached observations and validate settlement rail claims
randomblocker Oct 16, 2026
0b6f4bb
Bind testnet observations to evidence anchors and reconcile catalog c…
randomblocker Oct 16, 2026
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
36 changes: 18 additions & 18 deletions .github/workflows/dacs-directory-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,30 @@ concurrency:
jobs:
verify:
name: typecheck · test · build
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
defaults:
run:
working-directory: reference-implementations/dacs-directory
env:
# The SDK dependency tree emits patch-level engine requirements above
# Node 20.10; the app is validated on Node 22.
NODE_VERSION: "22"
# Keeps canonical URLs / sitemap deterministic during the build instead
# of falling back to localhost (which the build warns about).
NEXT_PUBLIC_DIRECTORY_URL: https://directory.ci.local
# Exercise the same production build-time path as the public /try page.
NEXT_PUBLIC_BUTLER_ORIGIN: https://agents.ci.local
# of falling back to localhost (which the build warns about). A reserved
# RFC 6761 documentation name: only the flagged CI check below accepts it.
NEXT_PUBLIC_DIRECTORY_URL: https://directory.ci.example
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- uses: actions/setup-node@v7
# The exact Node release is pinned in .nvmrc.
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: "22"
node-version-file: reference-implementations/dacs-directory/.nvmrc

- name: Check the Node release
run: npm run check:node-runtime

- name: Vendor + build the pinned dacs-sdk, install app deps
# The vendored dacs-sdk is a private repo; setup-sdk.sh authenticates
# the nested clone with DACS_SDK_GITHUB_TOKEN when present. Add a
# read-only token (repo secret) with access to DACS-Agent-commerce/dacs-sdk
# or this step fails at the clone. The default GITHUB_TOKEN cannot read
# sibling private repos.
# setup-sdk.sh clones DACS-Agent-commerce/dacs-sdk at its pinned commit.
# The repo is public; DACS_SDK_GITHUB_TOKEN, when set, is only used to
# authenticate that clone.
env:
DACS_SDK_GITHUB_TOKEN: ${{ secrets.DACS_SDK_GITHUB_TOKEN }}
run: npm run setup
Expand All @@ -57,8 +55,10 @@ jobs:
- name: Test (includes seed smoke)
run: npm test

- name: Validate production origins
run: npm run check:deploy-config
# CI's origin is a documentation name, so this is the flagged check;
# railway.json runs the strict production one.
- name: Validate directory origin
run: npm run check:deploy-config -- --allow-documentation-names

- name: Production build
run: npm run build
Expand Down
2 changes: 1 addition & 1 deletion INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ The catalogue of community projects, in-tree and external. Conformance status va
| Project | Maintainer | DACS surface | Conformance | License | Status |
|---|---|---|---|---|---|
| agent-commerce-demo | KyneSys Labs | Full lifecycle (DACS-1..5); exercises `pay-x402` end-to-end (buyer-side EIP-3009/Permit2, USDC on Base) | `vector-tested` (golden vectors, DACS-Standard `conformance/`) | TBD on publication | **Canonical** (steward reference implementation; repo currently private, publication pending) |
| [dacs-directory](./reference-implementations/dacs-directory) | [randomblocker](https://github.com/randomblocker) | Community agent catalog and browser UI: DACS-1 §6.3.6 catalog API and ListingSummary/ReputationHint shapes; DACS-1 CCI identity resolution; DACS-5 §10.4 bundle and referenced-artifact verification; §10.5 reputation derivation | `exercises-spec` — implementation tests cover security boundaries and verification policy; no claim of full golden-vector coverage | MIT | In-tree |
| [dacs-directory](./reference-implementations/dacs-directory) | [randomblocker](https://github.com/randomblocker) | Community agent catalog and browser UI: DACS-1 §6.3.6 catalog API and ListingSummary/ReputationHint shapes; DACS-1 CCI identity resolution; DACS-5 §10.4 bundle and referenced-artifact verification; §10.5 observed history only (testnet TP-1 publishes no completion or fault rates or scores; [deviations](./reference-implementations/dacs-directory/docs/TP-1.md)) | `exercises-spec` — implementation tests cover security boundaries and verification policy; no claim of full golden-vector coverage | MIT | In-tree |
| [pathos-dacs-ref](https://github.com/cX3po/pathos-dacs-ref) | PATH-OS Labs | DACS-5 §10.4 AttestationBundle + JCS canonical form §B.2 (signed-scope hashing); §10.4.2/3 two-sided anchoring + divergence; DACS-1 identity verify, DACS-2 recipe vetting, DACS-3 sealed-bid, DACS-4 settlement-evidence; selective-disclosure / consent / dispute-evidence layer | `vector-tested` — reproduces the DACS-Standard `conformance/` golden AttestationBundle hashes (§10.4 signed scope + canonical form §B.2); `exercises-spec` for the rest (two-sided anchoring, DACS-1/2/3/4, disclosure/consent/dispute) | MIT | External |
| [dacs-verify](https://github.com/mj-deving/dacs-verify) | mj-deving | Independent Bun/TypeScript verifier and conformance runner for DACS v0.1: canonical JSON + content hashes (§B.2), domain-separated signatures (§B.7), DACS-1 identity/listing checks, DACS-2 vetting primitives, DACS-3 agreement checks, DACS-4 settlement evidence, DACS-5 AttestationBundle/reputation verification, plus a proposed DACS-X dispute/disclosure prototype. **Generates DACS-Standard's published §14 golden vectors** — named as the `generator` in `conformance/MANIFEST.json` | `vector-tested` — passes 186 DACS-Standard golden conformance checks across DACS-1..5 verifier surfaces; DACS-X dispute/disclosure code is `prototype` / non-normative | MIT | External |
| [stranger-gauntlet](https://github.com/cX3po/pathos-dacs-ref/tree/main/showcase/stranger-gauntlet) | PATH-OS Labs | A2A trust showcase — one Shopper vets three stranger vendor agents through the DACS-5 §10.4.1 AttestationBundle acceptance verifier: two honest bundles → `accept`; a bundle tampered *after* signing → `reject` with the decisive check named. Exercises §10.4.1 signed-scope hashing (R5-1 anchoredByRole-excluded canonical form) and §7.5.1 do-not-collapse (`accept` vs `reject`/`indeterminate`) | `exercises-spec` — demonstrates the §10.4.1 verifier catching a counterfeit built from local fixed-seed fixtures (not named DACS-Standard vectors); the underlying verifier + canonical hasher are the vector-tested pathos-dacs-ref. Deterministic, zero-network, no deployed identities | MIT | External |
Expand Down
41 changes: 19 additions & 22 deletions docs/codex-local-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,24 @@ It uses the Node version and SDK revision already pinned by the repository.

## Keep the worktree isolated

- Use Node 22, as required by
`reference-implementations/dacs-directory/.nvmrc` and `package.json`.
- Use the exact Node release in `reference-implementations/dacs-directory/.nvmrc`,
as CI and Railway do. `package.json` engines names the same release.
- Do not copy `.env` files, tokens, wallets, seeds, `data/`, `node_modules/`, or
`vendor/` from another worktree.
- Keep development catalog state under this worktree's
`reference-implementations/dacs-directory/data/` directory. Verification uses
a separate disposable directory, as shown below.
- Do not run the indexer or live/paid browser tests as part of local static and
unit verification. They are separate, networked activities.
- Do not run the indexer or browser tests as part of local static and unit
verification. The indexer is a separate, networked activity, and browser
tests need their own setup.

## Install the pinned dependencies

From the Community repository root, use your normally initialized version
manager to select an already-installed Node 22 (for example `nvm use 22`) and
confirm that `node --version` prints `v22.x`. Then set paths from the current
worktree rather than a fixed checkout location:
Use your normally initialized version manager to select the `.nvmrc` release
(with nvm, run `nvm install` from `reference-implementations/dacs-directory`, which
reads `.nvmrc`) and confirm that `node --version` prints `v` followed by that
file's content. Then, from the Community repository root, set paths from the
current worktree rather than a fixed checkout location:

```bash
repo_root=$(git rev-parse --show-toplevel)
Expand All @@ -30,7 +32,6 @@ cd "$app_dir"

export DACS_DIRECTORY_DATA="$app_dir/data"
export NEXT_TELEMETRY_DISABLED=1
unset RUN_LIVE_PAID_E2E LIVE_BUTLER_ORIGIN
```

Read the exact SDK commit from the committed setup script, then create or
Expand Down Expand Up @@ -101,9 +102,9 @@ stops at that check:

Rerunning the block on a clean checkout is safe: it re-pins the checkout and
reinstalls. If it prints `stopped: ...` or any command fails, fix that before
continuing; do not run the checks below on a partial install. Access to the SDK
repository may require your normal GitHub authentication; do not put a token in
a remote URL or committed file.
continuing; do not run the checks below on a partial install. The SDK repository
is public, so the clone needs no GitHub authentication; never put a token in a
remote URL or committed file.

The existing clone's `origin` is used for fetching, but its checked-out `HEAD`
must still match the exact SDK commit pinned by this repository.
Expand All @@ -113,10 +114,10 @@ must still match the exact SDK commit pinned by this repository.
These are the same check commands as the Directory CI's typecheck, test,
origin-validation, and production-build steps. CI's `npm run setup` and the
installation above both use `npm ci` for the SDK and app. Use the same
placeholder origins as the `env:` block of
`.github/workflows/dacs-directory-ci.yml` (today
`NEXT_PUBLIC_DIRECTORY_URL` and `NEXT_PUBLIC_BUTLER_ORIGIN`; drop any variable
the workflow no longer sets):
placeholder origin as the `env:` block of
`.github/workflows/dacs-directory-ci.yml` (today only
`NEXT_PUBLIC_DIRECTORY_URL`). That origin is a reserved documentation name, so,
as in CI, the origin check runs with `--allow-documentation-names`.

```bash
(
Expand All @@ -127,12 +128,8 @@ the workflow no longer sets):

npm run typecheck
npm test
NEXT_PUBLIC_DIRECTORY_URL=https://directory.ci.local \
NEXT_PUBLIC_BUTLER_ORIGIN=https://agents.ci.local \
npm run check:deploy-config
NEXT_PUBLIC_DIRECTORY_URL=https://directory.ci.local \
NEXT_PUBLIC_BUTLER_ORIGIN=https://agents.ci.local \
npm run build
NEXT_PUBLIC_DIRECTORY_URL=https://directory.ci.example npm run check:deploy-config -- --allow-documentation-names
NEXT_PUBLIC_DIRECTORY_URL=https://directory.ci.example npm run build
)
```

Expand Down
1 change: 0 additions & 1 deletion reference-implementations/dacs-directory/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ data/*.sqlite-shm
data/*.sqlite-wal
.playwright-mcp/
playwright-report/
playwright-report-live/
test-results/
*.png
tsconfig.tsbuildinfo
2 changes: 1 addition & 1 deletion reference-implementations/dacs-directory/.nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22
22.23.3
Loading