@vegastack/skills 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.js +8 -35
- package/package.json +1 -1
- package/skill/architect/SKILL.md +68 -0
- package/skill/architect/agents/openai.yaml +4 -0
- package/skill/architect/assets/adr-template.md +21 -0
- package/skill/architect/assets/arch-template.md +20 -0
- package/skill/architect/references/advisory.md +102 -0
- package/skill/architect/references/ai-agents.md +95 -0
- package/skill/architect/references/data.md +90 -0
- package/skill/architect/references/infra.md +128 -0
- package/skill/architect/references/mobile.md +78 -0
- package/skill/architect/references/pinned-facts.md +108 -0
- package/skill/architect/references/principles.md +91 -0
- package/skill/architect/references/project-profile.md +37 -0
- package/skill/architect/references/security.md +97 -0
- package/skill/architect/references/stack.md +38 -0
- package/skill/architect/references/web.md +152 -0
- package/skill/architect/refresh/REFRESH.md +29 -0
- package/skill/architect/refresh/sources.json +244 -0
- package/skill/skill-maintainer/references/release-ops.md +11 -15
- package/skill/skill-maintainer/refresh/REFRESH.md +3 -3
- package/skill-integrity.json +20 -44
- package/skill/arch-guardian/SKILL.md +0 -84
- package/skill/arch-guardian/agents/openai.yaml +0 -4
- package/skill/arch-guardian/assets/adr-template.md +0 -25
- package/skill/arch-guardian/assets/answers-example.json +0 -10
- package/skill/arch-guardian/assets/architecture-profile.json +0 -13
- package/skill/arch-guardian/assets/architecture-profile.schema.json +0 -31
- package/skill/arch-guardian/assets/deployment-review-template.md +0 -24
- package/skill/arch-guardian/assets/service-design-template.md +0 -33
- package/skill/arch-guardian/assets/threat-model-template.md +0 -34
- package/skill/arch-guardian/references/advisory-report.md +0 -65
- package/skill/arch-guardian/references/architecture/agent-product.md +0 -22
- package/skill/arch-guardian/references/architecture/ai-cost.md +0 -24
- package/skill/arch-guardian/references/architecture/ai-data-boundaries.md +0 -21
- package/skill/arch-guardian/references/architecture/ai-evals.md +0 -28
- package/skill/arch-guardian/references/architecture/connectors-sandbox.md +0 -39
- package/skill/arch-guardian/references/architecture/data-memory.md +0 -25
- package/skill/arch-guardian/references/architecture/delivery-operations.md +0 -34
- package/skill/arch-guardian/references/architecture/durable-execution.md +0 -45
- package/skill/arch-guardian/references/architecture/flutter.md +0 -26
- package/skill/arch-guardian/references/architecture/foundation.md +0 -31
- package/skill/arch-guardian/references/architecture/hosting-reliability.md +0 -37
- package/skill/arch-guardian/references/architecture/identity-tenancy.md +0 -37
- package/skill/arch-guardian/references/architecture/model-lifecycle.md +0 -20
- package/skill/arch-guardian/references/architecture/models-observability.md +0 -23
- package/skill/arch-guardian/references/architecture/realtime-channels.md +0 -16
- package/skill/arch-guardian/references/architecture/security-privacy.md +0 -27
- package/skill/arch-guardian/references/architecture/topology-monorepo.md +0 -47
- package/skill/arch-guardian/references/architecture/web.md +0 -29
- package/skill/arch-guardian/references/foundation-compatibility.json +0 -44
- package/skill/arch-guardian/references/golden-patterns.md +0 -43
- package/skill/arch-guardian/references/profile-governance.md +0 -40
- package/skill/arch-guardian/references/rule-model.json +0 -36
- package/skill/arch-guardian/references/workflows.md +0 -48
- package/skill/arch-guardian/refresh/REFRESH.md +0 -47
- package/skill/arch-guardian/refresh/sources.json +0 -1171
- package/skill/arch-guardian/scripts/lib.mjs +0 -48
- package/skill/arch-guardian/scripts/profile-tool.mjs +0 -217
- package/skill/arch-guardian/scripts/refresh-evidence.mjs +0 -366
- package/skill/arch-guardian/scripts/schema-validate.mjs +0 -63
- package/skill/arch-guardian/scripts/validate-profile.mjs +0 -65
- package/skill/arch-guardian/scripts/verify-corpus.mjs +0 -136
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Freshness contract — architect
|
|
2
|
+
|
|
3
|
+
Most of this skill is durable taste and recorded decisions; it does not go stale on its
|
|
4
|
+
own. Exactly one file decays with the platform landscape: `references/pinned-facts.md`
|
|
5
|
+
(plus the version claims embedded in `references/stack.md` and `references/mobile.md`).
|
|
6
|
+
|
|
7
|
+
## Mechanism
|
|
8
|
+
|
|
9
|
+
1. **Weekly scheduled agent (primary).** A scheduled Claude Code/Codex job re-verifies
|
|
10
|
+
each pinned fact against its stated source URL and opens ONE pull request quoting
|
|
11
|
+
evidence for anything that changed (fact text, version, date, source). The diffing
|
|
12
|
+
judgment lives in the agent run, not in maintained scripts. The PR is human-reviewed —
|
|
13
|
+
never auto-merged.
|
|
14
|
+
2. **Refresh-on-use (safety net, written into SKILL.md).** When a recommendation leans on
|
|
15
|
+
a pinned fact older than 60 days, the consuming agent re-verifies that one fact first
|
|
16
|
+
and says so. Never bulk-refresh in-session.
|
|
17
|
+
3. **Registry baseline (`sources.json`).** The repo-shared refresh runner
|
|
18
|
+
(`tooling/refresh/refresh-evidence.mjs`) keeps checksum baselines for the critical
|
|
19
|
+
source pages so CI can detect upstream drift deterministically between weekly runs.
|
|
20
|
+
|
|
21
|
+
## Rules
|
|
22
|
+
|
|
23
|
+
- Critical sources (Hyperdrive supported versions, Better Auth docs, eve/Workflow SDK
|
|
24
|
+
deploy constraints) get `critical: true` — drift there warrants a prompt PR, not a
|
|
25
|
+
batch.
|
|
26
|
+
- Every edited fact keeps the pattern: fact → why it changes a decision → source URL →
|
|
27
|
+
verified date. The file carries one blanket verified-date for facts checked together;
|
|
28
|
+
a fact re-verified alone gets its own inline date, superseding the blanket one.
|
|
29
|
+
- A fact that stops being decision-changing is deleted, not kept for completeness.
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"policy": {
|
|
4
|
+
"criticalTopics": [
|
|
5
|
+
"hyperdrive-postgres",
|
|
6
|
+
"better-auth",
|
|
7
|
+
"eve-deploy"
|
|
8
|
+
],
|
|
9
|
+
"defaultChecksumScope": "html-text-v1",
|
|
10
|
+
"offline": "Use cached metadata only; fail closed when a critical entry is missing or older than thresholdDays.",
|
|
11
|
+
"drift": "Any drift requires reading the changed page and a human-reviewed PR updating references/pinned-facts.md (and version claims in references/stack.md / references/mobile.md); never auto-apply.",
|
|
12
|
+
"copyright": "Store claim metadata, URLs, hashes, and concise excerpts only; never archive third-party documentation corpora.",
|
|
13
|
+
"cadence": "weekly scheduled-agent refresh; thresholdDays must be >= 14 (2x cadence) so a single missed run never breaches a threshold"
|
|
14
|
+
},
|
|
15
|
+
"sources": [
|
|
16
|
+
{
|
|
17
|
+
"id": "CF-HYPERDRIVE-VERSIONS",
|
|
18
|
+
"service": "Cloudflare Hyperdrive supported databases",
|
|
19
|
+
"kind": "official-docs",
|
|
20
|
+
"stability": "vendor-docs",
|
|
21
|
+
"thresholdDays": 14,
|
|
22
|
+
"critical": true,
|
|
23
|
+
"urls": {
|
|
24
|
+
"primary": "https://developers.cloudflare.com/hyperdrive/reference/supported-databases-and-features/"
|
|
25
|
+
},
|
|
26
|
+
"versionDetection": {
|
|
27
|
+
"type": "manual-review"
|
|
28
|
+
},
|
|
29
|
+
"topics": [
|
|
30
|
+
"hyperdrive-postgres"
|
|
31
|
+
],
|
|
32
|
+
"affected": [
|
|
33
|
+
"references/pinned-facts.md",
|
|
34
|
+
"references/stack.md",
|
|
35
|
+
"references/data.md"
|
|
36
|
+
],
|
|
37
|
+
"checksum": "fda2870b95deffce48dca7f3df3707325b1bc4a2d58a17708ee9220bfba5eba1",
|
|
38
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "CF-R2-PRICING",
|
|
42
|
+
"service": "Cloudflare R2 pricing",
|
|
43
|
+
"kind": "official-docs",
|
|
44
|
+
"stability": "vendor-docs",
|
|
45
|
+
"thresholdDays": 30,
|
|
46
|
+
"critical": false,
|
|
47
|
+
"urls": {
|
|
48
|
+
"primary": "https://developers.cloudflare.com/r2/pricing/"
|
|
49
|
+
},
|
|
50
|
+
"versionDetection": {
|
|
51
|
+
"type": "manual-review"
|
|
52
|
+
},
|
|
53
|
+
"topics": [
|
|
54
|
+
"r2-economics"
|
|
55
|
+
],
|
|
56
|
+
"affected": [
|
|
57
|
+
"references/pinned-facts.md",
|
|
58
|
+
"references/stack.md"
|
|
59
|
+
],
|
|
60
|
+
"checksum": "bd5e8d26f7bbf2f92182ad4ac1a59ae9b1d90695120062adaf54c281bd88e81f",
|
|
61
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "CF-WORKFLOWS-PRICING",
|
|
65
|
+
"service": "Cloudflare Workflows limits and pricing",
|
|
66
|
+
"kind": "official-docs",
|
|
67
|
+
"stability": "vendor-docs",
|
|
68
|
+
"thresholdDays": 30,
|
|
69
|
+
"critical": false,
|
|
70
|
+
"urls": {
|
|
71
|
+
"primary": "https://developers.cloudflare.com/workflows/reference/limits/"
|
|
72
|
+
},
|
|
73
|
+
"versionDetection": {
|
|
74
|
+
"type": "manual-review"
|
|
75
|
+
},
|
|
76
|
+
"topics": [
|
|
77
|
+
"workflows"
|
|
78
|
+
],
|
|
79
|
+
"affected": [
|
|
80
|
+
"references/pinned-facts.md",
|
|
81
|
+
"references/ai-agents.md"
|
|
82
|
+
],
|
|
83
|
+
"checksum": "64e10ca4ced4edc042d12a9a24f2e165ea71cb9481c30ac5f067f2f6c9218cda",
|
|
84
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "BETTER-AUTH-DOCS",
|
|
88
|
+
"service": "Better Auth documentation",
|
|
89
|
+
"kind": "official-docs",
|
|
90
|
+
"stability": "vendor-docs",
|
|
91
|
+
"thresholdDays": 14,
|
|
92
|
+
"critical": true,
|
|
93
|
+
"urls": {
|
|
94
|
+
"primary": "https://better-auth.com/docs/plugins/organization"
|
|
95
|
+
},
|
|
96
|
+
"versionDetection": {
|
|
97
|
+
"type": "npm",
|
|
98
|
+
"package": "better-auth"
|
|
99
|
+
},
|
|
100
|
+
"topics": [
|
|
101
|
+
"better-auth"
|
|
102
|
+
],
|
|
103
|
+
"affected": [
|
|
104
|
+
"references/pinned-facts.md",
|
|
105
|
+
"references/security.md",
|
|
106
|
+
"references/stack.md"
|
|
107
|
+
],
|
|
108
|
+
"currentVersion": "1.6.27",
|
|
109
|
+
"versionCheckedAt": "2026-08-12T14:33:11.062Z",
|
|
110
|
+
"checksum": "30edf1b6658a473a00005153a3eafc07de5c3decd6b8f09fc6c32f3a21c4db1c",
|
|
111
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "EVE-DOCS",
|
|
115
|
+
"service": "Vercel eve agent framework",
|
|
116
|
+
"kind": "official-docs",
|
|
117
|
+
"stability": "beta",
|
|
118
|
+
"thresholdDays": 14,
|
|
119
|
+
"critical": true,
|
|
120
|
+
"urls": {
|
|
121
|
+
"primary": "https://vercel.com/docs/eve"
|
|
122
|
+
},
|
|
123
|
+
"versionDetection": {
|
|
124
|
+
"type": "npm",
|
|
125
|
+
"package": "eve"
|
|
126
|
+
},
|
|
127
|
+
"topics": [
|
|
128
|
+
"eve-deploy"
|
|
129
|
+
],
|
|
130
|
+
"affected": [
|
|
131
|
+
"references/pinned-facts.md",
|
|
132
|
+
"references/ai-agents.md",
|
|
133
|
+
"references/stack.md"
|
|
134
|
+
],
|
|
135
|
+
"currentVersion": "0.33.2",
|
|
136
|
+
"versionCheckedAt": "2026-08-12T14:33:11.062Z",
|
|
137
|
+
"checksum": "a777f9da0cb3966a9c7cc06a3c12be34b2928800b370e966e8b6e0f5a5622915",
|
|
138
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "WORKFLOW-SDK-POSTGRES",
|
|
142
|
+
"service": "Workflow SDK Postgres world deployment constraints",
|
|
143
|
+
"kind": "official-docs",
|
|
144
|
+
"stability": "vendor-docs",
|
|
145
|
+
"thresholdDays": 14,
|
|
146
|
+
"critical": true,
|
|
147
|
+
"urls": {
|
|
148
|
+
"primary": "https://workflow-sdk.dev/worlds/postgres"
|
|
149
|
+
},
|
|
150
|
+
"versionDetection": {
|
|
151
|
+
"type": "npm",
|
|
152
|
+
"package": "@workflow/world-postgres"
|
|
153
|
+
},
|
|
154
|
+
"topics": [
|
|
155
|
+
"eve-deploy"
|
|
156
|
+
],
|
|
157
|
+
"affected": [
|
|
158
|
+
"references/pinned-facts.md",
|
|
159
|
+
"references/ai-agents.md"
|
|
160
|
+
],
|
|
161
|
+
"currentVersion": "4.3.3",
|
|
162
|
+
"versionCheckedAt": "2026-08-12T14:33:11.062Z",
|
|
163
|
+
"checksum": "3eca56b5ec9668638d4e00b290c157383dfe8ceaaa334de13bb6244b32fa6839",
|
|
164
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "NEXTJS-BLOG",
|
|
168
|
+
"service": "Next.js release blog",
|
|
169
|
+
"kind": "official-docs",
|
|
170
|
+
"stability": "vendor-docs",
|
|
171
|
+
"thresholdDays": 30,
|
|
172
|
+
"critical": false,
|
|
173
|
+
"urls": {
|
|
174
|
+
"primary": "https://nextjs.org/blog"
|
|
175
|
+
},
|
|
176
|
+
"versionDetection": {
|
|
177
|
+
"type": "npm",
|
|
178
|
+
"package": "next"
|
|
179
|
+
},
|
|
180
|
+
"topics": [
|
|
181
|
+
"nextjs"
|
|
182
|
+
],
|
|
183
|
+
"affected": [
|
|
184
|
+
"references/pinned-facts.md",
|
|
185
|
+
"references/web.md",
|
|
186
|
+
"references/stack.md"
|
|
187
|
+
],
|
|
188
|
+
"currentVersion": "16.3.0",
|
|
189
|
+
"versionCheckedAt": "2026-08-12T14:33:11.062Z",
|
|
190
|
+
"checksum": "9d5d2503e2e8aa7ed1c3f0cb972c78e64b2e3aae5f3ad264bb0a79bd179708f0",
|
|
191
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"id": "PG-BOSS-NPM",
|
|
195
|
+
"service": "pg-boss job queue",
|
|
196
|
+
"kind": "package-registry",
|
|
197
|
+
"stability": "stable",
|
|
198
|
+
"thresholdDays": 30,
|
|
199
|
+
"critical": false,
|
|
200
|
+
"urls": {
|
|
201
|
+
"primary": "https://registry.npmjs.org/pg-boss/latest"
|
|
202
|
+
},
|
|
203
|
+
"versionDetection": {
|
|
204
|
+
"type": "npm",
|
|
205
|
+
"package": "pg-boss"
|
|
206
|
+
},
|
|
207
|
+
"topics": [
|
|
208
|
+
"jobs"
|
|
209
|
+
],
|
|
210
|
+
"affected": [
|
|
211
|
+
"references/pinned-facts.md",
|
|
212
|
+
"references/ai-agents.md"
|
|
213
|
+
],
|
|
214
|
+
"currentVersion": "12.27.0",
|
|
215
|
+
"versionCheckedAt": "2026-08-12T14:33:11.062Z",
|
|
216
|
+
"checksumScope": "http-body",
|
|
217
|
+
"checksum": "abf4bc2795e2df03181a21dfd29c7b9234c933a9dcafa72b4583d590cad609da",
|
|
218
|
+
"retrievedAt": "2026-08-12T14:33:41.513Z"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"id": "FLUTTER-RELEASES",
|
|
222
|
+
"service": "Flutter release notes",
|
|
223
|
+
"kind": "official-docs",
|
|
224
|
+
"stability": "vendor-docs",
|
|
225
|
+
"thresholdDays": 30,
|
|
226
|
+
"critical": false,
|
|
227
|
+
"urls": {
|
|
228
|
+
"primary": "https://docs.flutter.dev/release/release-notes"
|
|
229
|
+
},
|
|
230
|
+
"versionDetection": {
|
|
231
|
+
"type": "manual-review"
|
|
232
|
+
},
|
|
233
|
+
"topics": [
|
|
234
|
+
"flutter"
|
|
235
|
+
],
|
|
236
|
+
"affected": [
|
|
237
|
+
"references/pinned-facts.md",
|
|
238
|
+
"references/mobile.md"
|
|
239
|
+
],
|
|
240
|
+
"checksum": "94f9df6f67615ee05d826995f9709309c5453d0d8e4be11232ca5d463929ed2b",
|
|
241
|
+
"retrievedAt": "2026-08-12T14:33:11.062Z"
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
}
|
|
@@ -4,26 +4,22 @@ Condensed operational playbook. The authoritative policies live at the repo root
|
|
|
4
4
|
|
|
5
5
|
## Semver for skill content
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Content is advisory prose and decision tables — no rule IDs, no machine-extracted rule format.
|
|
8
8
|
|
|
9
9
|
| Bump | Content change |
|
|
10
10
|
|---|---|
|
|
11
|
-
| MAJOR | Removing or renaming a
|
|
12
|
-
| MINOR | New
|
|
13
|
-
| PATCH | Factual refreshes: version pins, vendor mechanism names, URLs, registry checksums.
|
|
11
|
+
| MAJOR | Removing or renaming a skill. A breaking change to a per-project profile format (e.g. `.vegastack/arch.md`) that invalidates existing committed profiles. |
|
|
12
|
+
| MINOR | New reference file or reference section. New or changed recorded decision (e.g. a new "use/not/why" row, a new red line). New skill. |
|
|
13
|
+
| PATCH | Factual refreshes: pinned-fact updates, version pins, vendor mechanism names, URLs, registry checksums. Wording clarifications that don't change the recorded decision. Test/fixture-only changes. |
|
|
14
14
|
|
|
15
15
|
Installer/CLI changes follow ordinary semver on the same package version; a release takes the highest bump either side requires.
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## One version identity
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- Bumping the **package** (even MAJOR) must never invalidate a deployed profile — profiles bind to the foundation version.
|
|
25
|
-
- Bumping the **foundation** version is a content-contract event: it requires a compatibility entry describing how existing baselines are treated, and at minimum a MINOR package release.
|
|
26
|
-
- Each identity has one source of truth; never introduce additional copies of either number.
|
|
19
|
+
There is a single source of truth: the **package version** (`packages/cli/package.json`,
|
|
20
|
+
changesets-managed) — the npm release identity for the installer and every bundled skill's
|
|
21
|
+
content snapshot. No skill tracks a separate content-contract version, and no per-project
|
|
22
|
+
profile carries a schema version to validate against.
|
|
27
23
|
|
|
28
24
|
## Release flow (tag-driven)
|
|
29
25
|
|
|
@@ -44,7 +40,7 @@ Contributors do not bump versions in PRs; releases are maintainer-driven.
|
|
|
44
40
|
|
|
45
41
|
## Rename a skill
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
Skill names are consumer-facing identifiers — treat a rename as a stable-ID break:
|
|
48
44
|
|
|
49
45
|
1. Rename the directory and the frontmatter `name` in the same commit — they must always stay equal.
|
|
50
46
|
2. Update every wiring point in the same PR: the packaging allowlist in `packages/cli/scripts/sync-skill.mjs`, the root README skills table row, and any cross-skill or docs links.
|
|
@@ -60,4 +56,4 @@ Derived from the stable-ID logic in content-versioning (skill names are consumer
|
|
|
60
56
|
|
|
61
57
|
## Refresh branches
|
|
62
58
|
|
|
63
|
-
Branches named `refresh/**` are reserved for the automated freshness loop and are CI-restricted to `skills/*/refresh
|
|
59
|
+
Branches named `refresh/**` are reserved for the automated freshness loop and are CI-restricted to `skills/*/refresh/`. Human content changes go on normal branches. Never hand-edit checksums/versions/timestamps anywhere — CI re-fetches claimed baselines, so hand-edited values cannot merge.
|
|
@@ -10,13 +10,13 @@ Instructions for the scheduled refresh agent (and any human running a manual ref
|
|
|
10
10
|
|
|
11
11
|
## How to refresh
|
|
12
12
|
|
|
13
|
-
The deterministic runner is repo-shared
|
|
13
|
+
The deterministic runner is repo-shared, hosted at `tooling/refresh/`. Run from the repo root:
|
|
14
14
|
|
|
15
15
|
1. **Deterministic pass first** (no LLM judgment):
|
|
16
|
-
`node
|
|
16
|
+
`node tooling/refresh/refresh-evidence.mjs --registry skills/skill-maintainer/refresh/sources.json`
|
|
17
17
|
drift/stale/unavailable results are the work-list. Exit 1 with a critical entry means fail-closed: the run must not be silently skipped. All four sources here are critical.
|
|
18
18
|
2. **Accept verified changes** in the same code path:
|
|
19
|
-
`node
|
|
19
|
+
`node tooling/refresh/refresh-evidence.mjs --registry skills/skill-maintainer/refresh/sources.json --accept-baselines`
|
|
20
20
|
This writes registry, cache, and drift report together — never hand-edit checksums, versions, or timestamps; they must always come from a run. Baselines are runner-seeded; when a new source is added or a verified change is accepted, this accept-baselines invocation is the only sanctioned way to update them.
|
|
21
21
|
3. **Semantic verification** for every source the deterministic pass flagged: read the changed page (fetch the registry URL), decide whether any `<!-- source: X -->` marked sentence in `references/standards.md` (or the mirrored SKILL.md hard-limits row) is now wrong, and propose the minimal edit. Unlike version-pin registries, checksum drift here is presumed meaningful until a human reads the diff — these pages define the standards themselves. Editorial churn may be accepted silently only after that read.
|
|
22
22
|
4. **One standing refresh PR**, branch `refresh/weekly`, force-updated on every run (never stacked duplicates; the weekly workflow .github/workflows/refresh.yml maintains it). PR body lists: each changed source, old→new checksum, links to the evidence, and which marked sentences changed and why. A maintainer review is mandatory before merge.
|
package/skill-integrity.json
CHANGED
|
@@ -1,58 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"skills": {
|
|
4
|
-
"
|
|
4
|
+
"architect": {
|
|
5
5
|
"files": {
|
|
6
|
-
"SKILL.md": "
|
|
7
|
-
"agents/openai.yaml": "
|
|
8
|
-
"assets/adr-template.md": "
|
|
9
|
-
"assets/
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"references/
|
|
16
|
-
"references/
|
|
17
|
-
"references/
|
|
18
|
-
"references/
|
|
19
|
-
"references/
|
|
20
|
-
"references/
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"references/architecture/durable-execution.md": "4dd1c7d69e41fb0abf7f469c8eadd1695b15c502e0219108c76d8aea06f9ffe6",
|
|
24
|
-
"references/architecture/flutter.md": "f024292b89b4667c65993bba906fb16afd278824f205f0e39c96a58384c6f423",
|
|
25
|
-
"references/architecture/foundation.md": "19536e03fdbb8720e263600a298b11e980cf6c24a724f8692db83b04302b39f1",
|
|
26
|
-
"references/architecture/hosting-reliability.md": "c69b00a354d78e2a7b2845cddc0d8a642911bc009efefa141075d1d774756142",
|
|
27
|
-
"references/architecture/identity-tenancy.md": "5fb2e5d74ae24ad2efe3ba01c06b8fcc16ba1dce1b9c531b7d955352af38d4c2",
|
|
28
|
-
"references/architecture/model-lifecycle.md": "eacdeade0fa88caaca11de9a9e69f0db8a9ecfc8b472070afb7158f5e30f6ba2",
|
|
29
|
-
"references/architecture/models-observability.md": "5501655b71d85e9653e5a8c276e481e2765b2a0c67c5bc23759f869529278b94",
|
|
30
|
-
"references/architecture/realtime-channels.md": "a95738c431f3f4c8c42c153a0b940897bae8d679ed0c2dfced3cb1c4c9c67ca5",
|
|
31
|
-
"references/architecture/security-privacy.md": "28d8d1a6347df95807d274829b2fbbd852c07a74d52d7e0be18d208b559504ea",
|
|
32
|
-
"references/architecture/topology-monorepo.md": "fdad26c8eaa32b977139e6f70c90a3954332a1fa6dd6e8d98bc9fb7c5a613117",
|
|
33
|
-
"references/architecture/web.md": "560957d179f9372ff01e3e216fdc8ad1cbee290ac95f42094d04da4af08a4c0a",
|
|
34
|
-
"references/foundation-compatibility.json": "dfbf106631ebd229d683b18855e126cdc4684a252038123b25d002724571ac14",
|
|
35
|
-
"references/golden-patterns.md": "0b00ece15e0ae20450d5c20409e7be34bab0d9b47c1614fb48cef780ca66605b",
|
|
36
|
-
"references/profile-governance.md": "b3ed0b4580c73fa0340c33267707ee9515071ac2b64bdc3dd56b8c558431a0b3",
|
|
37
|
-
"references/rule-model.json": "b9d4d13d152eecbb73a5add12c8ab9bb050e0f1001495c90c8b801d029b56598",
|
|
38
|
-
"references/workflows.md": "f54c284d831e14da00886fd186bc711bb8598fca4f2fc309f6caa197835e79ae",
|
|
39
|
-
"refresh/REFRESH.md": "db15a4304d0a3d3ab7f53722d30fb76609f1823cb2dc998f1807f092e79e008a",
|
|
40
|
-
"refresh/sources.json": "d35735620325c45693c8eddb5de5e7e1867cae19554e118b45867f8984250950",
|
|
41
|
-
"scripts/lib.mjs": "4ef4910518134eea7f89b6e397e5871f66a416429c75f59bf37e0864e4cf7ca0",
|
|
42
|
-
"scripts/profile-tool.mjs": "c13230b1c6a7bce9b91fb8a6a7d6eb84e9ef8855bf8b2a544e7bbfdc38e94877",
|
|
43
|
-
"scripts/refresh-evidence.mjs": "4759cedd15470247df23485b4c8d258e7e8f22cbceaac60f7e63cb42159af779",
|
|
44
|
-
"scripts/schema-validate.mjs": "329cca29ead284949107a5e0984588373522e9ef6624dffd18d4d207ef51fc99",
|
|
45
|
-
"scripts/validate-profile.mjs": "0b1f6b6d9e21267fd1ac545fd47fe46d9ecddc6a2efe67c5518e0845719a2b4d",
|
|
46
|
-
"scripts/verify-corpus.mjs": "d752efb00145afeaa7d2e758e10c5c11670253c1387326a52d6dda7fc67cda1c"
|
|
6
|
+
"SKILL.md": "70327518548075edd58f140710273df6dba6bd49327252a085b6881aae2f6663",
|
|
7
|
+
"agents/openai.yaml": "5bee46acf49a8c01856eec2a51a57aad95257c064302fca7f5e952016054b4e0",
|
|
8
|
+
"assets/adr-template.md": "72c84eebf90a7de8a6fc79c5165bada2683b38e86ccb1e3936e305f71be67d91",
|
|
9
|
+
"assets/arch-template.md": "a3dbfbd8b8f115e5cf3a922f26571ca469e0f4962d924e88bd9d8fd280b75d89",
|
|
10
|
+
"references/advisory.md": "ecba7d92cbf4dee9a6c9b7e0cb86f863748435be9fde4c0c8f493bcbc8e48249",
|
|
11
|
+
"references/ai-agents.md": "f39af3e8e6ea111157225c2786b428d66c944546898b08e45f12069633cf007e",
|
|
12
|
+
"references/data.md": "6c0384b53b66c914e39b4ca5f146cb50f1b91ca3ca5106e43b5cc2ce17bc59d5",
|
|
13
|
+
"references/infra.md": "cd56381da2d59fb2362fc162246269116cba92f796d0847cbac03e478b600add",
|
|
14
|
+
"references/mobile.md": "19932670613c064c979cf6d675c94213d3b12a5382d6fff4eacd58cb8b2a609c",
|
|
15
|
+
"references/pinned-facts.md": "07212409f708bd00ed69c77e98c61303ed1718514d907eb135c4c8ffe081196e",
|
|
16
|
+
"references/principles.md": "1d33c9f2912c04341c50398e30482c348d98a22ea218b06eca47b7aa247685b1",
|
|
17
|
+
"references/project-profile.md": "f3455643044260405ac47cdbeef5238e87a8ff9fbb285ce256a2aca9be9ff522",
|
|
18
|
+
"references/security.md": "4be060806c63c8c56559c293a818af581c2d7aec29f1830b57570dfda3c69d4a",
|
|
19
|
+
"references/stack.md": "b3aea9bb500b14c5bdb7576252e0af3be012d8c1f849d812c446e82ca2192af4",
|
|
20
|
+
"references/web.md": "df296df0a3c4fbbeda47f49ac96b4f0e9f4c5bba5dd68a428a3e390abd7f2261",
|
|
21
|
+
"refresh/REFRESH.md": "cdf7a06dd70f4b9483aa7a1db8c5e6c8e0a1f1724be22031d1aba1f609d69e22",
|
|
22
|
+
"refresh/sources.json": "38cf2a3fb13b5b4f3eec59d40d4faa4e5edcc0aecb66fbdd031aeefb92fecc01"
|
|
47
23
|
}
|
|
48
24
|
},
|
|
49
25
|
"skill-maintainer": {
|
|
50
26
|
"files": {
|
|
51
27
|
"SKILL.md": "bbbf15a9900d9d2009ccfbe163cface9654c81a9a84777718348d97b30739aeb",
|
|
52
28
|
"agents/openai.yaml": "0b89d4e6416cf20b448f5322f3d7433cfde333d2b4a05b42ed53db3759701fb4",
|
|
53
|
-
"references/release-ops.md": "
|
|
29
|
+
"references/release-ops.md": "a32c6dd6fff7b5c44d3d6dbcb32d7f3eb14f1ca61db85c0b31de032727952c3d",
|
|
54
30
|
"references/standards.md": "3646d0dd0560a87b333f70febf670b093c89b35111132cdb641b763bf184b02f",
|
|
55
|
-
"refresh/REFRESH.md": "
|
|
31
|
+
"refresh/REFRESH.md": "badbf807de2b2b38a7acb77d4e5a82ec7677afa1cb97abef34c429a81b855508",
|
|
56
32
|
"refresh/sources.json": "cf38cdf8123a50ea7ef2d1466a87faa648c12e5bc90d9ee9b6ae45632e7d0800"
|
|
57
33
|
}
|
|
58
34
|
},
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: arch-guardian
|
|
3
|
-
description: Architecture advisor for VegaStack projects. Use when designing a new service or feature, reviewing architecture or a risky change (auth, tenancy, agents, jobs, connectors, data lifecycle, hosting), deciding between architectural options, writing an ADR or a .vegastack/architecture.json profile, threat modeling, planning a migration, or checking dependency and source drift. Advises contextually by declared tier (prototype, production, enterprise) and enabled capabilities; recommends the smallest architecture that meets the requirement and produces evidence-backed advisory reports, never CI gates. Covers web-only, Flutter, agentic and non-agentic, single- and multi-tenant, internal, client, and package projects.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# VegaStack Architecture Guardian
|
|
7
|
-
|
|
8
|
-
Act as the project's senior architecture advisor. Apply only enabled capabilities at the declared tier. Recommend; never gate. Never invent compliance or project facts. There is no exception machinery: a team that departs from a recommendation records the decision, and you keep reporting it honestly as accepted risk.
|
|
9
|
-
|
|
10
|
-
## Start every task
|
|
11
|
-
|
|
12
|
-
1. Identify the actual decision, its scope, and how expensive it is to reverse.
|
|
13
|
-
2. Read the profile (`.vegastack/architecture.json`) and repository evidence before asking questions. Keep read-only work read-only; never create a profile or artifact merely because it is absent.
|
|
14
|
-
3. Note the **tier** (`prototype` | `production` | `enterprise`) — it decides which concerns apply. If no profile exists, ask for the tier (or state the assumed one) before recommending.
|
|
15
|
-
4. Separate facts, constraints, assumptions, preferences, and recorded team decisions. Distinguish current, target, and migration state.
|
|
16
|
-
5. Ask at most three material questions at a time. If unanswered, proceed with bounded assumptions and the smallest architecture that meets stated requirements — every proposed moving service names the trigger that justifies it.
|
|
17
|
-
6. Read only the directly relevant references below. Use the committed profile, designs, and ADRs as architecture memory; never rely on hidden chat state.
|
|
18
|
-
7. Prioritize security/correctness, recovery, ownership, contracts, operability, delivery, then optional optimization. Make one primary recommendation and identify the rejected alternative.
|
|
19
|
-
|
|
20
|
-
Script invocations below write `<skill-dir>` as a placeholder: replace it with the absolute path of the directory containing this SKILL.md before running (no environment variable is set for you).
|
|
21
|
-
|
|
22
|
-
## Answer at the right size
|
|
23
|
-
|
|
24
|
-
- **Questions and explanations:** answer directly — the recommendation and at most one material risk. No section headers, no report.
|
|
25
|
-
- **Design reviews, ADRs, migration plans:** use the [advisory report contract](references/advisory-report.md): per-area grades (`sound`/`attention`/`at-risk`), severity-ranked findings (`critical`/`production-gate`/`enterprise-gate`/`consider`), each with cited evidence and its principle ID, plus questions and not-verified items. No finding without evidence; detection is never a claim of absence.
|
|
26
|
-
|
|
27
|
-
## Route progressively
|
|
28
|
-
|
|
29
|
-
| Need | Read |
|
|
30
|
-
|---|---|
|
|
31
|
-
| operating model, tiers, minimum viable architecture, profiles | [foundation](references/architecture/foundation.md), [profile and governance](references/profile-governance.md) |
|
|
32
|
-
| greenfield, brownfield, review, migration workflows | [adaptive workflows](references/workflows.md) |
|
|
33
|
-
| review output format and evidence recipes | [advisory report](references/advisory-report.md) |
|
|
34
|
-
| topology, deployables, packages, contracts | [topology and monorepo](references/architecture/topology-monorepo.md) |
|
|
35
|
-
| web/Next/OpenAPI/cache | [web](references/architecture/web.md) |
|
|
36
|
-
| Flutter/mobile | [Flutter](references/architecture/flutter.md) |
|
|
37
|
-
| identity, organizations, tenancy, RLS | [identity and tenancy](references/architecture/identity-tenancy.md) |
|
|
38
|
-
| agent product and durable execution/jobs | [agent product](references/architecture/agent-product.md), [durable execution](references/architecture/durable-execution.md) |
|
|
39
|
-
| connectors, MCP, webhooks, sandbox, egress | [connectors and sandbox](references/architecture/connectors-sandbox.md) |
|
|
40
|
-
| data, knowledge, memory, objects | [data and memory](references/architecture/data-memory.md) |
|
|
41
|
-
| PII, prompt injection, output moderation | [AI data boundaries](references/architecture/ai-data-boundaries.md) |
|
|
42
|
-
| evals, prompt/model regression gates | [AI evals](references/architecture/ai-evals.md) |
|
|
43
|
-
| model pinning, deprecations, canary, backpressure | [model lifecycle](references/architecture/model-lifecycle.md) |
|
|
44
|
-
| model spend, budgets, cost attribution | [AI cost](references/architecture/ai-cost.md) |
|
|
45
|
-
| realtime, notifications, channels | [realtime and channels](references/architecture/realtime-channels.md) |
|
|
46
|
-
| models, BYOK, telemetry, audit | [models and observability](references/architecture/models-observability.md) |
|
|
47
|
-
| security, privacy, secrets, threat model | [security and privacy](references/architecture/security-privacy.md) |
|
|
48
|
-
| hosting, Cloudflare/OpenNext, SLO/recovery | [hosting and reliability](references/architecture/hosting-reliability.md) |
|
|
49
|
-
| delivery, migration, verification | [delivery and operations](references/architecture/delivery-operations.md) |
|
|
50
|
-
| fragile boundary implementation | [golden patterns](references/golden-patterns.md) |
|
|
51
|
-
|
|
52
|
-
For current detail beyond a pinned claim, [refresh/sources.json](refresh/sources.json) is also the research index: fetch the affected source's `llms` or `docsIndex` URL (or use an available docs MCP). For design reviews and recommendations that lean on a **critical** source (`critical: true`), check freshness — `node <skill-dir>/scripts/refresh-evidence.mjs --topics <affected-topics>` when online, or report the claim as not verified when offline past its `thresholdDays`. Plain questions answer from the shipped snapshot with a one-line staleness caveat. Consult [foundation compatibility](references/foundation-compatibility.json) for version baselines.
|
|
53
|
-
|
|
54
|
-
## Execute the task-specific workflow
|
|
55
|
-
|
|
56
|
-
- **Greenfield:** Follow the adaptive intake in [workflows](references/workflows.md): interview (tier first), recommend one capability set and topology sized by minimum viable architecture, name immediate/deferred decisions and triggers, and offer a slim profile draft after confirmation.
|
|
57
|
-
- **Brownfield/review:** Inspect instructions, manifests/locks, deployables, schemas/migrations, auth, APIs, jobs, infra, ADRs, and runbooks before interviewing. Produce an advisory report; prefer controlled migration over rewrites.
|
|
58
|
-
- **ADR/design/threat/deploy:** Use the relevant asset only after write authorization; an ADR is a decision record, never a waiver.
|
|
59
|
-
- **Continuous work:** Load only affected references. Do not force absent capabilities or higher-tier concerns into scope.
|
|
60
|
-
- **Source drift:** Follow [refresh/REFRESH.md](refresh/REFRESH.md). Refresh only affected topics.
|
|
61
|
-
|
|
62
|
-
## Profiles and mutation safety
|
|
63
|
-
|
|
64
|
-
The committed profile lives at `.vegastack/architecture.json` (schema v4, ~12 lines; legacy names are discovered with a deprecation notice). Inspect or draft without mutation:
|
|
65
|
-
|
|
66
|
-
```sh
|
|
67
|
-
node <skill-dir>/scripts/profile-tool.mjs inspect .
|
|
68
|
-
node <skill-dir>/scripts/profile-tool.mjs scaffold answers.json --dir .
|
|
69
|
-
node <skill-dir>/scripts/profile-tool.mjs migrate .vegastack/architecture.json --dir . # v3 -> v4 draft
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
`inspect` prints a compact summary; `--json` for the full draft. The answers format is documented by example in `<skill-dir>/assets/answers-example.json`. Write only after explicit authorization; writes are atomic, refuse symlinks, stay inside `--dir`, and require `--force` to replace differing content (`--write` to apply). Validate with:
|
|
73
|
-
|
|
74
|
-
```sh
|
|
75
|
-
node <skill-dir>/scripts/validate-profile.mjs .vegastack/architecture.json
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Guardrails
|
|
79
|
-
|
|
80
|
-
- Tiers gate concerns, never tools. Never require a tool when only the invariant matters: the mechanism (platform secret store vs OpenBao, cron vs pg-boss, in-process loop vs EVE at prototype) is chosen by named triggers and recorded per project.
|
|
81
|
-
- Never require SQL/RLS, Better Auth, Flutter, EVE, pg-boss, sandbox, connectors, enterprise identity, realtime, notifications, or knowledge when their activation condition is absent — and never surface enterprise-tier concerns as defects to a prototype/production project; report them as that tier's gate.
|
|
82
|
-
- Challenge proposals and defaults when evidence warrants. Choose the smallest architecture meeting current requirements and measured objectives.
|
|
83
|
-
- Never mutate a repository for an explanation or read-only review. Draft first and ask before writing.
|
|
84
|
-
- Never create paid/cloud resources or claim live recovery, isolation, failover, credential-backed, or provider tests ran unless they actually ran.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "VegaStack Architecture Guardian"
|
|
3
|
-
short_description: "Tier-aware architecture advisor for VegaStack projects"
|
|
4
|
-
default_prompt: "Use $arch-guardian to make one scoped architecture recommendation for this project at its declared tier, without assuming absent capabilities or requiring tools whose triggers are unmet."
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# ADR-NNN: Decision title
|
|
2
|
-
|
|
3
|
-
An ADR is an optional decision record for consequential architecture choices — including deliberate departures from a guardian recommendation. Nothing gates on it; it exists so future readers know the decision was deliberate, who owns it, and when to revisit it.
|
|
4
|
-
|
|
5
|
-
- Status: proposed | accepted | superseded | rejected
|
|
6
|
-
- Date: YYYY-MM-DD
|
|
7
|
-
- Owner: accountable person
|
|
8
|
-
- Related-Principles: canonical rule IDs this decision touches, or `none`
|
|
9
|
-
- Revisit: YYYY-MM-DD or a concrete event, or `none`
|
|
10
|
-
|
|
11
|
-
## Context and facts
|
|
12
|
-
|
|
13
|
-
Separate observed facts, constraints, assumptions, preferences and prior accepted decisions. Identify current, target and migration states.
|
|
14
|
-
|
|
15
|
-
## Decision and rationale
|
|
16
|
-
|
|
17
|
-
State the primary decision, ownership, boundaries and why it fits. State the rejected alternative and the reason — including, for any new moving service, the trigger that justifies it.
|
|
18
|
-
|
|
19
|
-
## Risks
|
|
20
|
-
|
|
21
|
-
Describe each accepted risk, who accepts it, and what is affected. If this departs from a guardian recommendation, say so plainly; the guardian will keep reporting it as accepted risk in reviews.
|
|
22
|
-
|
|
23
|
-
## Verification and rollback
|
|
24
|
-
|
|
25
|
-
What evidence supports the decision (label unverified claims honestly), how it would be rolled back or migrated away from, and any irreversible steps.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"project": { "name": "example-product", "kind": "saas", "tier": "production", "tenancy": "multi-tenant-shared-schema" },
|
|
3
|
-
"hosting": "cloudflare-opennext",
|
|
4
|
-
"capabilities": ["web", "jobs"],
|
|
5
|
-
"notes": [
|
|
6
|
-
"Better Auth is the identity library",
|
|
7
|
-
"PostgreSQL is the system of record; RLS forced on tenant tables",
|
|
8
|
-
"Secrets live in the platform's managed secret store (trigger review before enterprise tier)"
|
|
9
|
-
]
|
|
10
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 4,
|
|
3
|
-
"foundationVersion": "0.4.0",
|
|
4
|
-
"project": {
|
|
5
|
-
"name": "REQUIRED-CONFIRMED-PROJECT-NAME",
|
|
6
|
-
"kind": "REQUIRED-CONFIRMED-KIND",
|
|
7
|
-
"tier": "REQUIRED-CONFIRMED-TIER",
|
|
8
|
-
"tenancy": "REQUIRED-CONFIRMED-TENANCY"
|
|
9
|
-
},
|
|
10
|
-
"hosting": "REQUIRED-CONFIRMED-HOSTING",
|
|
11
|
-
"capabilities": [],
|
|
12
|
-
"notes": []
|
|
13
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://raw.githubusercontent.com/vegastack/vegastack-skills/main/skills/arch-guardian/assets/architecture-profile.schema.json",
|
|
4
|
-
"title": "VegaStack Architecture Profile v4",
|
|
5
|
-
"description": "Slim advisor memory: confirmed project facts, the declared tier, and the enabled capability list. Versions are read from lockfiles and manifests at advice time, never duplicated here.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"additionalProperties": false,
|
|
8
|
-
"required": ["schemaVersion", "project", "hosting", "capabilities"],
|
|
9
|
-
"properties": {
|
|
10
|
-
"schemaVersion": { "const": 4 },
|
|
11
|
-
"foundationVersion": { "type": "string", "minLength": 1 },
|
|
12
|
-
"project": {
|
|
13
|
-
"type": "object",
|
|
14
|
-
"additionalProperties": false,
|
|
15
|
-
"required": ["name", "kind", "tier", "tenancy"],
|
|
16
|
-
"properties": {
|
|
17
|
-
"name": { "type": "string", "minLength": 1 },
|
|
18
|
-
"kind": { "enum": ["saas", "internal-tool", "client-site", "api", "package"] },
|
|
19
|
-
"tier": { "enum": ["prototype", "production", "enterprise"] },
|
|
20
|
-
"tenancy": { "enum": ["none", "single-tenant", "multi-tenant-shared-schema", "multi-tenant-isolated"] }
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"hosting": { "enum": ["self-hosted", "vercel", "cloudflare-opennext", "external", "none"] },
|
|
24
|
-
"capabilities": {
|
|
25
|
-
"type": "array",
|
|
26
|
-
"uniqueItems": true,
|
|
27
|
-
"items": { "enum": ["web", "flutter", "agents", "jobs", "sandbox", "connectors", "knowledge", "models", "realtime", "notifications", "enterprise-identity"] }
|
|
28
|
-
},
|
|
29
|
-
"notes": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Deployment review: release/profile
|
|
2
|
-
|
|
3
|
-
Delete checklist items for absent capabilities; absence is not a failed control.
|
|
4
|
-
|
|
5
|
-
## Artifact identity
|
|
6
|
-
|
|
7
|
-
- Commit:
|
|
8
|
-
- OCI/image/package digests:
|
|
9
|
-
- SBOM/provenance/signatures:
|
|
10
|
-
- Database migration:
|
|
11
|
-
- Architecture profile digest:
|
|
12
|
-
|
|
13
|
-
## Placement
|
|
14
|
-
|
|
15
|
-
Verify each enabled owned deployable and each shared/external contract against the selected profile. For Cloudflare/OpenNext, verify owned EVE/jobs stay in external long-running Node/OCI placement.
|
|
16
|
-
|
|
17
|
-
## Safety gates
|
|
18
|
-
|
|
19
|
-
- [ ] Backward-compatible API/events and expand/contract migration
|
|
20
|
-
- [ ] Applicable runtime/protocol families are exact and atomically qualified
|
|
21
|
-
- [ ] Applicable tenancy/authz paths are cache-safe and negatively tested
|
|
22
|
-
- [ ] Applicable sandbox/connector/secret boundaries are qualified
|
|
23
|
-
- [ ] Applicable backup/restore evidence is within confirmed RPO/RTO
|
|
24
|
-
- [ ] Rollout, health, rollback, and incident ownership are explicit
|