---
title: Decisions
canonical: https://skift.stead.ing/docs/adrs/
site: skift
---

# Decisions

- [Store the DAG in plain PostgreSQL tables, not a graph database](https://skift.stead.ing/docs/adrs/001-relational-tables-over-graph-database.md)
- [Connect-RPC is the only door, with identity resolved by transport](https://skift.stead.ing/docs/adrs/002-connect-rpc-is-the-only-door.md)
- [Artifacts are content-addressed: managed blobs plus external references](https://skift.stead.ing/docs/adrs/003-artifacts-are-content-addressed.md)
- [Authorization by embedded OPA and Rego policy](https://skift.stead.ing/docs/adrs/004-embedded-opa-authorization.md)
- [Align with A2A: a skift node maps to many A2A tasks, one per lease](https://skift.stead.ing/docs/adrs/005-a2a-alignment.md)
- [Provenance is not client-assertable, and the store never confers authority](https://skift.stead.ing/docs/adrs/006-provenance-not-authority.md)
- [Core tech stack: Go, buf, sqlc, goose, pgx, Ginkgo](https://skift.stead.ing/docs/adrs/007-core-tech-stack.md)
- [Short enum names are the JSON wire form, through one derived codec](https://skift.stead.ing/docs/adrs/008-short-enum-names-on-the-json-wire.md)
- [The default gate policy is a notification channel, not a safety boundary](https://skift.stead.ing/docs/adrs/009-the-default-gate-policy-is-notification.md)
- [Parking work is a hold on the graph, not a status and not orchestrator configuration](https://skift.stead.ing/docs/adrs/010-hold-is-eligibility-not-status.md)
