0.3.0: .archify files are YAML and open straight into the diagram
- .archify content is YAML (JSON still accepted); converted to JSON for the renderer - Archify Diagram custom editor is the default for *.archify; Show Source opens the YAML beside it - YAML syntax errors and validation problems mapped to YAML lines - yamlValidation for schema completion with redhat.vscode-yaml - scripts/to-yaml.mjs converts existing .archify files
This commit is contained in:
Vendored
+165
-77
@@ -1,77 +1,165 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"diagram_type": "sequence",
|
||||
"meta": {
|
||||
"title": "Cache Miss Request Sequence",
|
||||
"output": "examples/sequence-cache-miss-request.html",
|
||||
"viewBox": [1080, 580],
|
||||
"column_fit": "spread",
|
||||
"animation": "trace",
|
||||
"quality_profile": "showcase"
|
||||
},
|
||||
"participants": [
|
||||
{ "id": "user", "type": "external", "label": "User", "sublabel": "browser session" },
|
||||
{ "id": "web", "type": "frontend", "label": "Web App", "sublabel": "React UI" },
|
||||
{ "id": "api", "type": "backend", "label": "API", "sublabel": "request handler" },
|
||||
{ "id": "auth", "type": "security", "label": "Auth", "sublabel": "JWT verify" },
|
||||
{ "id": "redis", "type": "database", "label": "Redis", "sublabel": "cache" },
|
||||
{ "id": "db", "type": "database", "label": "Postgres", "sublabel": "source of truth" },
|
||||
{ "id": "trace", "type": "messagebus", "label": "Trace", "sublabel": "async event" }
|
||||
],
|
||||
"segments": [
|
||||
{ "from": 150, "to": 250, "label": "Request" },
|
||||
{ "from": 260, "to": 370, "label": "Fallback" },
|
||||
{ "from": 380, "to": 480, "label": "Response + trace" }
|
||||
],
|
||||
"messages": [
|
||||
{ "id": "open-page", "from": "user", "to": "web", "y": 160, "label": "open page", "variant": "default" },
|
||||
{ "id": "dashboard-request", "from": "web", "to": "api", "y": 185, "label": "GET /dashboard", "variant": "emphasis" },
|
||||
{ "id": "verify-jwt", "from": "api", "to": "auth", "y": 210, "label": "verify JWT", "variant": "security" },
|
||||
{ "id": "auth-claims", "from": "auth", "to": "api", "y": 238, "label": "claims ok", "variant": "return" },
|
||||
{ "id": "cache-read", "from": "api", "to": "redis", "y": 270, "label": "read cache", "variant": "default" },
|
||||
{ "id": "cache-miss", "from": "redis", "to": "api", "y": 298, "label": "miss", "variant": "return" },
|
||||
{ "id": "profile-query", "from": "api", "to": "db", "y": 330, "label": "query profile + metrics", "variant": "emphasis" },
|
||||
{ "id": "profile-rows", "from": "db", "to": "api", "y": 358, "label": "rows", "variant": "return" },
|
||||
{ "id": "cache-write", "from": "api", "to": "redis", "y": 390, "label": "set cache", "variant": "dashed" },
|
||||
{ "id": "trace-emit", "from": "api", "to": "trace", "y": 418, "label": "emit trace", "variant": "dashed" },
|
||||
{ "id": "dashboard-response", "from": "api", "to": "web", "y": 443, "label": "200 JSON", "variant": "return" },
|
||||
{ "id": "page-render", "from": "web", "to": "user", "y": 468, "label": "render", "variant": "return" }
|
||||
],
|
||||
"activations": [
|
||||
{ "participant": "web", "from": 180, "to": 474, "type": "frontend" },
|
||||
{ "participant": "api", "from": 185, "to": 450, "type": "backend" },
|
||||
{ "participant": "auth", "from": 205, "to": 244, "type": "security" },
|
||||
{ "participant": "redis", "from": 265, "to": 304, "type": "database" },
|
||||
{ "participant": "db", "from": 325, "to": 364, "type": "database" },
|
||||
{ "participant": "trace", "from": 413, "to": 449, "type": "messagebus" }
|
||||
],
|
||||
"cards": [
|
||||
{
|
||||
"dot": "emerald",
|
||||
"title": "Happy Path",
|
||||
"items": [
|
||||
"The main request is Web App -> API -> data source -> response",
|
||||
"Return messages are quieter than forward calls",
|
||||
"Activation bars make ownership duration visible"
|
||||
]
|
||||
},
|
||||
{
|
||||
"dot": "rose",
|
||||
"title": "Policy + Fallback",
|
||||
"items": [
|
||||
"JWT verification is colored as a security interaction",
|
||||
"Cache miss is visible without overpowering the main path",
|
||||
"Database access only appears after cache fallback"
|
||||
]
|
||||
},
|
||||
{
|
||||
"dot": "orange",
|
||||
"title": "Async Trace",
|
||||
"items": [
|
||||
"Trace emission is dashed and secondary",
|
||||
"It does not block the response path",
|
||||
"The diagram separates user-facing latency from observability"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
schema_version: 1
|
||||
diagram_type: sequence
|
||||
meta:
|
||||
title: Cache Miss Request Sequence
|
||||
output: examples/sequence-cache-miss-request.html
|
||||
viewBox: [1080, 580]
|
||||
column_fit: spread
|
||||
animation: trace
|
||||
quality_profile: showcase
|
||||
participants:
|
||||
- id: user
|
||||
type: external
|
||||
label: User
|
||||
sublabel: browser session
|
||||
- id: web
|
||||
type: frontend
|
||||
label: Web App
|
||||
sublabel: React UI
|
||||
- id: api
|
||||
type: backend
|
||||
label: API
|
||||
sublabel: request handler
|
||||
- id: auth
|
||||
type: security
|
||||
label: Auth
|
||||
sublabel: JWT verify
|
||||
- id: redis
|
||||
type: database
|
||||
label: Redis
|
||||
sublabel: cache
|
||||
- id: db
|
||||
type: database
|
||||
label: Postgres
|
||||
sublabel: source of truth
|
||||
- id: trace
|
||||
type: messagebus
|
||||
label: Trace
|
||||
sublabel: async event
|
||||
segments:
|
||||
- from: 150
|
||||
to: 250
|
||||
label: Request
|
||||
- from: 260
|
||||
to: 370
|
||||
label: Fallback
|
||||
- from: 380
|
||||
to: 480
|
||||
label: Response + trace
|
||||
messages:
|
||||
- id: open-page
|
||||
from: user
|
||||
to: web
|
||||
y: 160
|
||||
label: open page
|
||||
variant: default
|
||||
- id: dashboard-request
|
||||
from: web
|
||||
to: api
|
||||
y: 185
|
||||
label: GET /dashboard
|
||||
variant: emphasis
|
||||
- id: verify-jwt
|
||||
from: api
|
||||
to: auth
|
||||
y: 210
|
||||
label: verify JWT
|
||||
variant: security
|
||||
- id: auth-claims
|
||||
from: auth
|
||||
to: api
|
||||
y: 238
|
||||
label: claims ok
|
||||
variant: return
|
||||
- id: cache-read
|
||||
from: api
|
||||
to: redis
|
||||
y: 270
|
||||
label: read cache
|
||||
variant: default
|
||||
- id: cache-miss
|
||||
from: redis
|
||||
to: api
|
||||
y: 298
|
||||
label: miss
|
||||
variant: return
|
||||
- id: profile-query
|
||||
from: api
|
||||
to: db
|
||||
y: 330
|
||||
label: query profile + metrics
|
||||
variant: emphasis
|
||||
- id: profile-rows
|
||||
from: db
|
||||
to: api
|
||||
y: 358
|
||||
label: rows
|
||||
variant: return
|
||||
- id: cache-write
|
||||
from: api
|
||||
to: redis
|
||||
y: 390
|
||||
label: set cache
|
||||
variant: dashed
|
||||
- id: trace-emit
|
||||
from: api
|
||||
to: trace
|
||||
y: 418
|
||||
label: emit trace
|
||||
variant: dashed
|
||||
- id: dashboard-response
|
||||
from: api
|
||||
to: web
|
||||
y: 443
|
||||
label: 200 JSON
|
||||
variant: return
|
||||
- id: page-render
|
||||
from: web
|
||||
to: user
|
||||
y: 468
|
||||
label: render
|
||||
variant: return
|
||||
activations:
|
||||
- participant: web
|
||||
from: 180
|
||||
to: 474
|
||||
type: frontend
|
||||
- participant: api
|
||||
from: 185
|
||||
to: 450
|
||||
type: backend
|
||||
- participant: auth
|
||||
from: 205
|
||||
to: 244
|
||||
type: security
|
||||
- participant: redis
|
||||
from: 265
|
||||
to: 304
|
||||
type: database
|
||||
- participant: db
|
||||
from: 325
|
||||
to: 364
|
||||
type: database
|
||||
- participant: trace
|
||||
from: 413
|
||||
to: 449
|
||||
type: messagebus
|
||||
cards:
|
||||
- dot: emerald
|
||||
title: Happy Path
|
||||
items:
|
||||
- The main request is Web App -> API -> data source -> response
|
||||
- Return messages are quieter than forward calls
|
||||
- Activation bars make ownership duration visible
|
||||
- dot: rose
|
||||
title: Policy + Fallback
|
||||
items:
|
||||
- JWT verification is colored as a security interaction
|
||||
- Cache miss is visible without overpowering the main path
|
||||
- Database access only appears after cache fallback
|
||||
- dot: orange
|
||||
title: Async Trace
|
||||
items:
|
||||
- Trace emission is dashed and secondary
|
||||
- It does not block the response path
|
||||
- The diagram separates user-facing latency from observability
|
||||
|
||||
Reference in New Issue
Block a user