@afokapu/atdd-bun 0.10.32 → 0.10.34
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 +14 -10
- package/conventions/_profiles/architecture.yaml +190 -0
- package/conventions/_profiles/coder.yaml +804 -0
- package/conventions/_profiles/design.yaml +219 -0
- package/conventions/_profiles/docs.yaml +136 -0
- package/conventions/_profiles/htmx.yaml +436 -0
- package/conventions/_profiles/interlocking.yaml +248 -0
- package/conventions/_profiles/metrics.yaml +80 -0
- package/conventions/_profiles/planner.yaml +789 -0
- package/conventions/_profiles/runtime.yaml +62 -0
- package/conventions/_profiles/security.yaml +70 -0
- package/conventions/_profiles/telemetry.yaml +196 -0
- package/conventions/_profiles/tester.yaml +734 -0
- package/conventions/_profiles/topology.yaml +192 -0
- package/conventions/_profiles/traceability.yaml +94 -0
- package/conventions/_profiles/workflow.yaml +7 -0
- package/conventions/atdd-bun.profiles/atdd-bun.profiles.presets.convention.yaml +24 -2
- package/integrity.json +27 -12
- package/package.json +2 -1
- package/src/agent.ts +15 -15
- package/src/cli.ts +7 -0
- package/src/enforce.ts +23 -10
- package/src/hooks.ts +3 -3
- package/src/index.ts +1 -0
- package/src/integrity.ts +0 -2
- package/src/profile-registry.ts +78 -0
- package/src/setup.ts +4 -4
- package/templates/agents/AGENTS.block.md +4 -6
- package/templates/agents/atdd/SKILL.md +0 -20
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
schema_version: "1.0.0"
|
|
2
|
+
profile: "runtime"
|
|
3
|
+
implementations:
|
|
4
|
+
- "bun_fullstack_detector"
|
|
5
|
+
conventions:
|
|
6
|
+
- rule_id: "coder.bun.runtime-server-is-bun-serve"
|
|
7
|
+
path: "conventions/coder.bun/coder.bun.runtime-server-is-bun-serve.convention.yaml"
|
|
8
|
+
- rule_id: "coder.bun.runtime-single-lockfile"
|
|
9
|
+
path: "conventions/coder.bun/coder.bun.runtime-single-lockfile.convention.yaml"
|
|
10
|
+
- rule_id: "coder.bun.runtime-typecheck-enforced"
|
|
11
|
+
path: "conventions/coder.bun/coder.bun.runtime-typecheck-enforced.convention.yaml"
|
|
12
|
+
relationships:
|
|
13
|
+
- confidence: 1
|
|
14
|
+
constraint: "discretionary"
|
|
15
|
+
control: "internal"
|
|
16
|
+
foundation: "start_to_start"
|
|
17
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
18
|
+
reason: "One governs the server you run, the other the client you call out with."
|
|
19
|
+
source_ref: "coder.bun.runtime-server-is-bun-serve"
|
|
20
|
+
strength: "minor"
|
|
21
|
+
target_ref: "coder.bun.boundaries-http-client"
|
|
22
|
+
type: "runs_alongside"
|
|
23
|
+
- confidence: 1
|
|
24
|
+
constraint: "mandatory"
|
|
25
|
+
control: "internal"
|
|
26
|
+
foundation: "finish_to_start"
|
|
27
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
28
|
+
reason: "server.ts is a composition root precisely BECAUSE Bun.serve is the assembly point of a full-stack Bun app."
|
|
29
|
+
source_ref: "coder.bun.runtime-server-is-bun-serve"
|
|
30
|
+
strength: "important"
|
|
31
|
+
target_ref: "coder.bun.composition-root"
|
|
32
|
+
type: "enables"
|
|
33
|
+
- confidence: 1
|
|
34
|
+
constraint: "mandatory"
|
|
35
|
+
control: "internal"
|
|
36
|
+
foundation: "start_to_start"
|
|
37
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
38
|
+
reason: "Both hold the stack decision itself: Bun's server, Bun's resolver."
|
|
39
|
+
source_ref: "coder.bun.runtime-single-lockfile"
|
|
40
|
+
strength: "important"
|
|
41
|
+
target_ref: "coder.bun.runtime-server-is-bun-serve"
|
|
42
|
+
type: "runs_alongside"
|
|
43
|
+
- confidence: 1
|
|
44
|
+
constraint: "mandatory"
|
|
45
|
+
control: "internal"
|
|
46
|
+
foundation: "start_to_start"
|
|
47
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
48
|
+
reason: "Complementary halves of one guarantee about the resolution model. The shape rule proves an InterlockingResolution declaring the eight fields EXISTS; only a typechecker proves what resolveTrain actually returns conforms to it, and Bun runs .ts without checking."
|
|
49
|
+
source_ref: "coder.bun.runtime-typecheck-enforced"
|
|
50
|
+
strength: "important"
|
|
51
|
+
target_ref: "coder.bun.interlocking-resolution-model-exists"
|
|
52
|
+
type: "runs_alongside"
|
|
53
|
+
- confidence: 1
|
|
54
|
+
constraint: "discretionary"
|
|
55
|
+
control: "internal"
|
|
56
|
+
foundation: "start_to_start"
|
|
57
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
58
|
+
reason: "Both are Bun runtime decisions read from package.json and its neighbours: one that a single resolver owns the dependency graph, the other that the types in it are actually checked."
|
|
59
|
+
source_ref: "coder.bun.runtime-typecheck-enforced"
|
|
60
|
+
strength: "minor"
|
|
61
|
+
target_ref: "coder.bun.runtime-single-lockfile"
|
|
62
|
+
type: "runs_alongside"
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
schema_version: "1.0.0"
|
|
2
|
+
profile: "security"
|
|
3
|
+
implementations:
|
|
4
|
+
- "bun_security_hygiene_detector"
|
|
5
|
+
conventions:
|
|
6
|
+
- rule_id: "coder.bun.error-response-bare-string"
|
|
7
|
+
path: "conventions/coder.bun/coder.bun.error-response-bare-string.convention.yaml"
|
|
8
|
+
- rule_id: "coder.bun.error-response-code-format"
|
|
9
|
+
path: "conventions/coder.bun/coder.bun.error-response-code-format.convention.yaml"
|
|
10
|
+
- rule_id: "coder.bun.logging-console"
|
|
11
|
+
path: "conventions/coder.bun/coder.bun.logging-console.convention.yaml"
|
|
12
|
+
- rule_id: "coder.bun.logging-structured"
|
|
13
|
+
path: "conventions/coder.bun/coder.bun.logging-structured.convention.yaml"
|
|
14
|
+
- rule_id: "coder.bun.security-hardcoded-secret"
|
|
15
|
+
path: "conventions/coder.bun/coder.bun.security-hardcoded-secret.convention.yaml"
|
|
16
|
+
- rule_id: "coder.bun.security-missing-auth"
|
|
17
|
+
path: "conventions/coder.bun/coder.bun.security-missing-auth.convention.yaml"
|
|
18
|
+
- rule_id: "coder.bun.security-sql-injection"
|
|
19
|
+
path: "conventions/coder.bun/coder.bun.security-sql-injection.convention.yaml"
|
|
20
|
+
relationships:
|
|
21
|
+
- confidence: 1
|
|
22
|
+
constraint: "mandatory"
|
|
23
|
+
control: "internal"
|
|
24
|
+
foundation: "finish_to_start"
|
|
25
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
26
|
+
reason: "A structured payload must exist before its error code can be constrained."
|
|
27
|
+
source_ref: "coder.bun.error-response-code-format"
|
|
28
|
+
strength: "important"
|
|
29
|
+
target_ref: "coder.bun.error-response-bare-string"
|
|
30
|
+
type: "requires"
|
|
31
|
+
- confidence: 1
|
|
32
|
+
constraint: "discretionary"
|
|
33
|
+
control: "internal"
|
|
34
|
+
foundation: "start_to_start"
|
|
35
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
36
|
+
reason: "Both govern what a failure leaves behind: one for the operator, one for the caller."
|
|
37
|
+
source_ref: "coder.bun.logging-structured"
|
|
38
|
+
strength: "minor"
|
|
39
|
+
target_ref: "coder.bun.error-response-bare-string"
|
|
40
|
+
type: "runs_alongside"
|
|
41
|
+
- confidence: 1
|
|
42
|
+
constraint: "mandatory"
|
|
43
|
+
control: "internal"
|
|
44
|
+
foundation: "start_to_start"
|
|
45
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
46
|
+
reason: "One bans the wrong channel, the other requires context on the right one; either alone leaves logs unusable."
|
|
47
|
+
source_ref: "coder.bun.logging-structured"
|
|
48
|
+
strength: "important"
|
|
49
|
+
target_ref: "coder.bun.logging-console"
|
|
50
|
+
type: "runs_alongside"
|
|
51
|
+
- confidence: 1
|
|
52
|
+
constraint: "mandatory"
|
|
53
|
+
control: "internal"
|
|
54
|
+
foundation: "start_to_start"
|
|
55
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
56
|
+
reason: "A leaked credential defeats the authorisation check the sibling rule requires."
|
|
57
|
+
source_ref: "coder.bun.security-hardcoded-secret"
|
|
58
|
+
strength: "important"
|
|
59
|
+
target_ref: "coder.bun.security-missing-auth"
|
|
60
|
+
type: "runs_alongside"
|
|
61
|
+
- confidence: 1
|
|
62
|
+
constraint: "mandatory"
|
|
63
|
+
control: "internal"
|
|
64
|
+
foundation: "start_to_start"
|
|
65
|
+
origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.bun/relationships.yaml"
|
|
66
|
+
reason: "Authorisation decides WHO may act, parameterisation what their input can DO; a boundary needs both."
|
|
67
|
+
source_ref: "coder.bun.security-sql-injection"
|
|
68
|
+
strength: "critical"
|
|
69
|
+
target_ref: "coder.bun.security-missing-auth"
|
|
70
|
+
type: "runs_alongside"
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
schema_version: "1.0.0"
|
|
2
|
+
profile: "telemetry"
|
|
3
|
+
implementations:
|
|
4
|
+
- "bun_telemetry_code"
|
|
5
|
+
- "bun_telemetry_test"
|
|
6
|
+
- "planner_telemetry_plan"
|
|
7
|
+
conventions:
|
|
8
|
+
- rule_id: "coder.bun.telemetry-forbidden-properties"
|
|
9
|
+
path: "conventions/coder.bun/coder.bun.telemetry-forbidden-properties.convention.yaml"
|
|
10
|
+
- rule_id: "coder.bun.telemetry-implementation-binding"
|
|
11
|
+
path: "conventions/coder.bun/coder.bun.telemetry-implementation-binding.convention.yaml"
|
|
12
|
+
- rule_id: "coder.bun.telemetry-raw-string-emit"
|
|
13
|
+
path: "conventions/coder.bun/coder.bun.telemetry-raw-string-emit.convention.yaml"
|
|
14
|
+
- rule_id: "coder.bun.telemetry-source-binding"
|
|
15
|
+
path: "conventions/coder.bun/coder.bun.telemetry-source-binding.convention.yaml"
|
|
16
|
+
- rule_id: "coder.bun.telemetry-vendor-sdk"
|
|
17
|
+
path: "conventions/coder.bun/coder.bun.telemetry-vendor-sdk.convention.yaml"
|
|
18
|
+
- rule_id: "planner.telemetry.acceptance-decision"
|
|
19
|
+
path: "conventions/planner.telemetry/planner.telemetry.acceptance-decision.convention.yaml"
|
|
20
|
+
- rule_id: "planner.telemetry.logical-ownership"
|
|
21
|
+
path: "conventions/planner.telemetry/planner.telemetry.logical-ownership.convention.yaml"
|
|
22
|
+
- rule_id: "planner.telemetry.metric-cardinality"
|
|
23
|
+
path: "conventions/planner.telemetry/planner.telemetry.metric-cardinality.convention.yaml"
|
|
24
|
+
- rule_id: "planner.telemetry.tracking-plan-schema"
|
|
25
|
+
path: "conventions/planner.telemetry/planner.telemetry.tracking-plan-schema.convention.yaml"
|
|
26
|
+
- rule_id: "tester.bun.telemetry-captured-sink"
|
|
27
|
+
path: "conventions/tester.bun/tester.bun.telemetry-captured-sink.convention.yaml"
|
|
28
|
+
- rule_id: "tester.bun.telemetry-identity-assertion"
|
|
29
|
+
path: "conventions/tester.bun/tester.bun.telemetry-identity-assertion.convention.yaml"
|
|
30
|
+
- rule_id: "tester.bun.telemetry-required-item-coverage"
|
|
31
|
+
path: "conventions/tester.bun/tester.bun.telemetry-required-item-coverage.convention.yaml"
|
|
32
|
+
- rule_id: "tester.bun.telemetry-test-binding"
|
|
33
|
+
path: "conventions/tester.bun/tester.bun.telemetry-test-binding.convention.yaml"
|
|
34
|
+
- rule_id: "tester.bun.telemetry-timing-semantics"
|
|
35
|
+
path: "conventions/tester.bun/tester.bun.telemetry-timing-semantics.convention.yaml"
|
|
36
|
+
relationships:
|
|
37
|
+
- confidence: 1
|
|
38
|
+
constraint: "mandatory"
|
|
39
|
+
control: "internal"
|
|
40
|
+
foundation: "finish_to_start"
|
|
41
|
+
origin: "@afokapu/atdd-bun"
|
|
42
|
+
reason: "the forbidden-property list comes from the tracking-plan item"
|
|
43
|
+
source_ref: "coder.bun.telemetry-forbidden-properties"
|
|
44
|
+
strength: "important"
|
|
45
|
+
target_ref: "planner.telemetry.tracking-plan-schema"
|
|
46
|
+
type: "requires"
|
|
47
|
+
- confidence: 1
|
|
48
|
+
constraint: "mandatory"
|
|
49
|
+
control: "internal"
|
|
50
|
+
foundation: "finish_to_start"
|
|
51
|
+
origin: "@afokapu/atdd-bun"
|
|
52
|
+
reason: "the binding obligation runs on the same header the source rule resolves"
|
|
53
|
+
source_ref: "coder.bun.telemetry-implementation-binding"
|
|
54
|
+
strength: "important"
|
|
55
|
+
target_ref: "coder.bun.telemetry-source-binding"
|
|
56
|
+
type: "requires"
|
|
57
|
+
- confidence: 1
|
|
58
|
+
constraint: "mandatory"
|
|
59
|
+
control: "internal"
|
|
60
|
+
foundation: "finish_to_start"
|
|
61
|
+
origin: "@afokapu/atdd-bun"
|
|
62
|
+
reason: "required items come from acceptance decisions"
|
|
63
|
+
source_ref: "coder.bun.telemetry-implementation-binding"
|
|
64
|
+
strength: "important"
|
|
65
|
+
target_ref: "planner.telemetry.acceptance-decision"
|
|
66
|
+
type: "requires"
|
|
67
|
+
- confidence: 1
|
|
68
|
+
constraint: "mandatory"
|
|
69
|
+
control: "internal"
|
|
70
|
+
foundation: "finish_to_start"
|
|
71
|
+
origin: "@afokapu/atdd-bun"
|
|
72
|
+
reason: "only telemetry an acceptance has decided and the plan declares may be emitted by name"
|
|
73
|
+
source_ref: "coder.bun.telemetry-raw-string-emit"
|
|
74
|
+
strength: "important"
|
|
75
|
+
target_ref: "planner.telemetry.acceptance-decision"
|
|
76
|
+
type: "requires"
|
|
77
|
+
- confidence: 1
|
|
78
|
+
constraint: "mandatory"
|
|
79
|
+
control: "internal"
|
|
80
|
+
foundation: "finish_to_start"
|
|
81
|
+
origin: "@afokapu/atdd-bun"
|
|
82
|
+
reason: "a source Telemetry: reference resolves against the tracking-plan registry"
|
|
83
|
+
source_ref: "coder.bun.telemetry-source-binding"
|
|
84
|
+
strength: "important"
|
|
85
|
+
target_ref: "planner.telemetry.tracking-plan-schema"
|
|
86
|
+
type: "requires"
|
|
87
|
+
- confidence: 1
|
|
88
|
+
constraint: "mandatory"
|
|
89
|
+
control: "internal"
|
|
90
|
+
foundation: "start_to_start"
|
|
91
|
+
origin: "@afokapu/atdd-bun"
|
|
92
|
+
reason: "vendor SDKs stay in infrastructure adapters as framework imports stay out of domain"
|
|
93
|
+
source_ref: "coder.bun.telemetry-vendor-sdk"
|
|
94
|
+
strength: "important"
|
|
95
|
+
target_ref: "coder.bun.commons-domain-no-framework-import"
|
|
96
|
+
type: "runs_alongside"
|
|
97
|
+
- confidence: 1
|
|
98
|
+
constraint: "mandatory"
|
|
99
|
+
control: "internal"
|
|
100
|
+
foundation: "finish_to_start"
|
|
101
|
+
origin: "@afokapu/atdd-bun"
|
|
102
|
+
reason: "the disposition decision governs the telemetry URNs an acceptance may declare"
|
|
103
|
+
source_ref: "planner.telemetry.acceptance-decision"
|
|
104
|
+
strength: "important"
|
|
105
|
+
target_ref: "planner.acceptance.signal-telemetry-naming"
|
|
106
|
+
type: "requires"
|
|
107
|
+
- confidence: 1
|
|
108
|
+
constraint: "mandatory"
|
|
109
|
+
control: "internal"
|
|
110
|
+
foundation: "finish_to_start"
|
|
111
|
+
origin: "@afokapu/atdd-bun"
|
|
112
|
+
reason: "wagon produce[] telemetry entries are the ownership declarations items resolve against"
|
|
113
|
+
source_ref: "planner.telemetry.logical-ownership"
|
|
114
|
+
strength: "important"
|
|
115
|
+
target_ref: "planner.wagon.produce-consume-artifacts"
|
|
116
|
+
type: "requires"
|
|
117
|
+
- confidence: 1
|
|
118
|
+
constraint: "mandatory"
|
|
119
|
+
control: "internal"
|
|
120
|
+
foundation: "finish_to_start"
|
|
121
|
+
origin: "@afokapu/atdd-bun"
|
|
122
|
+
reason: "metric measures and dimensions inherit the naming rule's cardinality discipline"
|
|
123
|
+
source_ref: "planner.telemetry.metric-cardinality"
|
|
124
|
+
strength: "important"
|
|
125
|
+
target_ref: "planner.acceptance.signal-telemetry-naming"
|
|
126
|
+
type: "requires"
|
|
127
|
+
- confidence: 1
|
|
128
|
+
constraint: "mandatory"
|
|
129
|
+
control: "internal"
|
|
130
|
+
foundation: "finish_to_start"
|
|
131
|
+
origin: "@afokapu/atdd-bun"
|
|
132
|
+
reason: "a tracking-plan item's path mirrors its concrete telemetry identity"
|
|
133
|
+
source_ref: "planner.telemetry.tracking-plan-schema"
|
|
134
|
+
strength: "important"
|
|
135
|
+
target_ref: "planner.artifact-naming.path-mirrors-identity"
|
|
136
|
+
type: "follows"
|
|
137
|
+
- confidence: 1
|
|
138
|
+
constraint: "mandatory"
|
|
139
|
+
control: "internal"
|
|
140
|
+
foundation: "finish_to_start"
|
|
141
|
+
origin: "@afokapu/atdd-bun"
|
|
142
|
+
reason: "the tracking-plan tree is the versioned realization of the telemetry URN-to-filesystem mapping"
|
|
143
|
+
source_ref: "planner.telemetry.tracking-plan-schema"
|
|
144
|
+
strength: "important"
|
|
145
|
+
target_ref: "planner.wagon.telemetry-filesystem"
|
|
146
|
+
type: "requires"
|
|
147
|
+
- confidence: 1
|
|
148
|
+
constraint: "mandatory"
|
|
149
|
+
control: "internal"
|
|
150
|
+
foundation: "finish_to_start"
|
|
151
|
+
origin: "@afokapu/atdd-bun"
|
|
152
|
+
reason: "the captured-sink obligation carries the emission assertion into the telemetry profile"
|
|
153
|
+
source_ref: "tester.bun.telemetry-captured-sink"
|
|
154
|
+
strength: "important"
|
|
155
|
+
target_ref: "tester.bun.telemetry-emit"
|
|
156
|
+
type: "requires"
|
|
157
|
+
- confidence: 1
|
|
158
|
+
constraint: "mandatory"
|
|
159
|
+
control: "internal"
|
|
160
|
+
foundation: "finish_to_start"
|
|
161
|
+
origin: "@afokapu/atdd-bun"
|
|
162
|
+
reason: "exact identity extends the emission assertion from any-call to the named item"
|
|
163
|
+
source_ref: "tester.bun.telemetry-identity-assertion"
|
|
164
|
+
strength: "important"
|
|
165
|
+
target_ref: "tester.bun.telemetry-emit"
|
|
166
|
+
type: "requires"
|
|
167
|
+
- confidence: 1
|
|
168
|
+
constraint: "mandatory"
|
|
169
|
+
control: "internal"
|
|
170
|
+
foundation: "finish_to_start"
|
|
171
|
+
origin: "@afokapu/atdd-bun"
|
|
172
|
+
reason: "telemetry items follow the acceptance-has-test discipline"
|
|
173
|
+
source_ref: "tester.bun.telemetry-required-item-coverage"
|
|
174
|
+
strength: "important"
|
|
175
|
+
target_ref: "traceability.plan.executable-acceptance-has-test"
|
|
176
|
+
type: "requires"
|
|
177
|
+
- confidence: 1
|
|
178
|
+
constraint: "mandatory"
|
|
179
|
+
control: "internal"
|
|
180
|
+
foundation: "finish_to_start"
|
|
181
|
+
origin: "@afokapu/atdd-bun"
|
|
182
|
+
reason: "a bound test must point at the acceptance whose decision requires the item"
|
|
183
|
+
source_ref: "tester.bun.telemetry-test-binding"
|
|
184
|
+
strength: "important"
|
|
185
|
+
target_ref: "planner.telemetry.acceptance-decision"
|
|
186
|
+
type: "requires"
|
|
187
|
+
- confidence: 1
|
|
188
|
+
constraint: "mandatory"
|
|
189
|
+
control: "internal"
|
|
190
|
+
foundation: "finish_to_start"
|
|
191
|
+
origin: "@afokapu/atdd-bun"
|
|
192
|
+
reason: "timing semantics are declared on the tracking-plan item"
|
|
193
|
+
source_ref: "tester.bun.telemetry-timing-semantics"
|
|
194
|
+
strength: "important"
|
|
195
|
+
target_ref: "planner.telemetry.tracking-plan-schema"
|
|
196
|
+
type: "requires"
|