All notable changes to the AIACTA reference implementation are documented here.
Every time you merge something to main, the release-please workflow reads your commit messages and opens (or updates) a "Release PR" automatically. The PR contains the updated CHANGELOG.md and bumped version numbers. When you're ready to release, merge that PR. It creates the git tag, which triggers your existing release.yml, which publishes to npm and PyPI. Commit message format matters. See CONTRIBUTING.md(§5.2) for details.
1.0.14 (2026-04-21)
1.0.13 (2026-04-14)
1.0.12 (2026-04-14)
1.0.11 (2026-04-13)
1.0.10 (2026-04-11)
- webhook: provenance SQL columns, INSERT OR IGNORE transparency, auth middleware, gateway webhook resolution, fail-closed signing keys (#76) (62b252a)
1.0.9 (2026-04-11)
1.0.8 (2026-04-11)
- ct: replace HTTP_CODE grep separator with separate curl calls to fix exit code 2 (#60) (fae570e)
- query: provenance and cleaner citation routes (#64) (43c5e41)
- stale: not_planned instead of 'non planned' (#62) (00f2505)
1.0.7 (2026-04-09)
- release: aac dashboard released as asset artifact in Actions run, with release notes updated (#56) (ef08b2d)
1.0.6 (2026-04-08)
- release: delete immutable release and recreate with asset, bypasses HTTP 422 permanently (#54) (46919df)
1.0.5 (2026-04-08)
1.0.4 (2026-04-08)
- release: inject version from release tag into setup.py and package.json at build time — eliminates race condition with version-sync workflow (#50) (7bd636d)
1.0.3 (2026-04-08)
- release: upload dashboard asset to existing release using gh CLI instead of softprops (#48) (96dca3d)
1.0.2 (2026-04-08)
1.0.1 (2026-04-07)
- ci: dashboard vitest --passWithNoTests, jest --forceExit for Express packages; update READMEs to scoped names (#28) (6322e10)
- npm: add keywords, homepage, repository, and bugs fields to published packages (#30) (830bb80)
- release: linked versioning — release-please now syncs all package versions together (#32) (193fe3b)
- release: point Python test step at crawl-manifest-client where tests actually exist (#29) (849b69d)
- release: scope npm packages to @aiacta-org, fix release.yml trigger (#26) (49662b6)
- release: sync all package.json versions from root before test (#35) (7a037b7)
- resolve 10 bugs blocking CI and production release (#18) (981cc01)
- updated versions for package for successful CI workflow (#19) (3eb65a2)
- Complete reference implementation of all five AIACTA proposals
- ai-attribution-lint CLI validator (§5.7)
- ai-citation-sdk for Node.js, Python, and Go (§3.4)
- crawl-manifest-client for Node.js and Python (§2.2)
- AAC reference server with SQLite (§7.3–7.5)
- VWP gateway with HMAC and Ed25519 signature verification (§3.4A–D)
- Honeypot verification node (§2.4.1)
- Referrer-Policy middleware for Node.js and Python (§4.2–4.4)
- Attribution test harness with Docker (§12.1)
- Complete specification documents for all five proposals
- Implementation guide for AI providers
- Creator guide for publishers
- AAC governance documentation
- GitHub Actions CI/CD pipeline
- Security policy
Core packages (§12.1)
ai-attribution-lint— CLI validator forai-attribution.txtfiles. Validates field syntax, SPDX licence IDs, webhook reachability, robots.txt conflicts, purpose enum values, and reward tier values.ai-citation-sdk— Webhook receiver SDK in Node.js, Python, and Go. HMAC-SHA256 signature verification, idempotency handling, 6-attempt retry schedule, and Express middleware.crawl-manifest-client— Pull client for the Crawl Manifest API (§2.2) in Node.js and Python. Cursor pagination, 90-day range validation, rate-limit backoff, and in-memory caching.aac-dashboard-lite— Self-hosted React analytics dashboard. Aggregates citation events from multiple AI providers; visualises distribution weights per §7.5 formula.attribution-test-harness— Docker sandbox with a mock AI provider server, publisher fixtures, and E2E scenario tests for all four technical proposals.
Additional packages
aac-server— AAC Reference Server with provider/publisher enrollment, citation ingestion, distribution engine, query classifier, velocity throttling, FPA fraud detection engine, and Provenance Query API (§9.5.1).vwp-gateway— Verifiable Webhook Protocol gateway (§3.4A-D): Ed25519 + HMAC-SHA256 provider verification, Proof-of-Inference spot-audit, anti-Sybil velocity throttle, and webhook forwarder.referrer-middleware— Express and WSGI middleware enforcingReferrer-Policy: originand opt-in UTM parameter appending (§4.2-4.4).honeypot-verifier— Verification Node server (§2.4.1): canary URL registration, crawler header logging, and model completion probing to detect crawl-purpose misreporting.
Shared
- JSON Schema definitions for all three AIACTA wire formats (crawl manifest, citation webhook, ai-attribution.txt parsed model).
- TypeScript type definitions shared across Node.js packages.
Content hash utility (§2.3)
computeContentHash/verifyContentHashin both Node.js and Python. Implements "SHA-256 of UTF-8 normalised body text (HTML stripped, whitespace collapsed)" as specified.
Query classification (§7.4)
classifyQueryheuristic classifier distinguishing Content-Dependent Queries from Logical/Utility Queries for PCF fee calculation.calculatePcfFeereturns 0 for logical/utility queries per spec.
Documentation
docs/getting-started.md— Quick-start for publishers and AI providers.docs/compliance-tiers.md— Bronze → Platinum implementation guide.docs/proposals/— One deep-dive doc per proposal.docs/governance/aac-governance.md— Working group composition and specification change process.docs/integration/— C2PA and schema.org integration guides.
Canonical-URLfield inai-attribution.txt(§6.5)C2PA-Endpointfield for cryptographic provenance (§10.1)- PostgreSQL adapter for
aac-server - Full OAuth 2.0 authentication on AAC server endpoints
- Squarespace and Medium CMS integrations
- MAJOR version schema change process per §5.6
- W3C REP working group liaison submission
- ML-based query classifier (replaces heuristic in
query-classifier.js)