Desenvolvendo
Em construção
Esta página está em construção. O conteúdo pode mudar ou estar incompleto.
O cenário
Contexto
A spec de uma nova funcionalidade de e-commerce está aprovada (usando OpenSpec, BMAD ou similar).
O que acontece
Para cancelar um pedido, o agente escreve direto no orders-db, que é de outro time.
Como a ASL ajuda?
Com a ASL no projeto, o agente a usa como harness de arquitetura enquanto programa e confere cada mudança.
Hoje: Markdown como harness
tasks.md — payments
Explorer
openspec
proposal.md
tasks.md
src
1# Tasks
2
3- [x] 1.1 Create cancellation-service
4- [x] 1.2 Write the cancellation to orders-db
5- [x] 1.3 Set owner: team-fulfillment
6<!-- orders-db pertence ao orders-service: fora da spec -->
Problemas0Terminal
Nenhum problema foi detectado no workspace.
Semanas depois: o orders-service muda o schema e o cancellation-service quebra. Ninguém sabia que dividiam um banco.
Arquitetura como Código com ASL
cancellation.asl.yaml — payments
Agente escreve
…
6spec:
7 relations:
8 - from: {kind: Application, name: cancellation-service}
9 to: {kind: Database, name: orders-db}
10 type: writes
Application cannot write to a database owned by another application
architecture/cancellation.asl.yaml:1 · acme.write-only-own-databaseAgente corrige
…
6spec:
7 relations:
8 - from: {kind: Application, name: cancellation-service}
9 to: {kind: Topic, name: cancellation-requests}
10 type: produces
11 - from: {kind: Application, name: orders-service}
12 to: {kind: Topic, name: cancellation-requests}
13 type: consumes
14 - from: {kind: Application, name: orders-service}
15 to: {kind: Database, name: orders-db}
16 type: readsAndWrites
$ asl ./architecture --policies-bundle-path ./policies
ok
A ASL confere as relações entre componentes com base nas políticas da sua empresa.