@enki-dev-expert/global-engineering-standards 0.0.0-stage → 0.1.1
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/AGENTS.md +303 -0
- package/CHANGELOG.md +28 -0
- package/CITATION.cff +21 -0
- package/CODE_OF_CONDUCT.md +13 -0
- package/CONTRIBUTING.md +27 -0
- package/LICENSE +21 -0
- package/README.md +159 -2
- package/SECURITY.md +25 -0
- package/dist/cli.js +40 -0
- package/dist/content.js +71 -0
- package/dist/filesystem.js +83 -0
- package/dist/installer.js +243 -0
- package/dist/layout.js +42 -0
- package/dist/transaction.js +143 -0
- package/docs/ai-and-llm.md +1312 -0
- package/docs/architecture.md +1007 -0
- package/docs/cost-engineering.md +1322 -0
- package/docs/data.md +993 -0
- package/docs/governance.md +1744 -0
- package/docs/mobile-and-web.md +1362 -0
- package/docs/observability.md +1345 -0
- package/docs/platforms-and-applications.md +1581 -0
- package/docs/privacy.md +566 -0
- package/docs/quality-and-testing.md +1278 -0
- package/docs/scalability.md +1012 -0
- package/docs/security.md +373 -0
- package/handbook/claude-plugin.md +31 -0
- package/handbook/compatibility.md +27 -0
- package/handbook/recovery.md +29 -0
- package/handbook/releasing.md +50 -0
- package/handbook/security-review.md +41 -0
- package/handbook/signing.md +18 -0
- package/handbook/validation.md +50 -0
- package/package.json +65 -4
- package/scripts/content-baseline.json +25 -0
- package/skills/engineering-architecture-review/SKILL.md +1531 -0
- package/skills/engineering-cost-estimate/SKILL.md +1599 -0
- package/skills/engineering-database-review/SKILL.md +1364 -0
- package/skills/engineering-privacy-check/SKILL.md +1295 -0
- package/skills/engineering-safe-implementation/SKILL.md +1502 -0
- package/skills/engineering-security-standards-check/SKILL.md +1112 -0
- package/src/cli.ts +45 -0
- package/src/content.ts +82 -0
- package/src/filesystem.ts +94 -0
- package/src/installer.ts +280 -0
- package/src/layout.ts +70 -0
- package/src/transaction.ts +167 -0
- package/templates/ADR.md +1302 -0
- package/templates/AUDIT_REPORT.md +1693 -0
- package/templates/EXCEPTIONS.md +647 -0
- package/templates/PROJECT_AGENTS.md +868 -0
package/docs/security.md
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
|
|
2
|
+
# Global Application Security Standards
|
|
3
|
+
|
|
4
|
+
## 1. Mission
|
|
5
|
+
|
|
6
|
+
Design, develop, operate and maintain secure production-grade applications.
|
|
7
|
+
|
|
8
|
+
Apply security by design, privacy by design, defense in depth, least privilege, secure defaults and Zero Trust principles where applicable.
|
|
9
|
+
|
|
10
|
+
These standards apply to web, iOS, Android, backend services, databases, APIs, AI systems and infrastructure.
|
|
11
|
+
|
|
12
|
+
Security is a mandatory engineering requirement.
|
|
13
|
+
|
|
14
|
+
No system can be guaranteed completely attack-proof. The objective is to prevent foreseeable attacks, reduce exploitable vulnerabilities, limit damage, detect incidents and support rapid recovery.
|
|
15
|
+
|
|
16
|
+
## 2. Security Frameworks
|
|
17
|
+
|
|
18
|
+
Apply the relevant requirements from:
|
|
19
|
+
|
|
20
|
+
- OWASP Application Security Verification Standard (ASVS) 5.0.
|
|
21
|
+
- OWASP API Security Top 10.
|
|
22
|
+
- OWASP Mobile Application Security Verification Standard (MASVS).
|
|
23
|
+
- OWASP LLM Top 10 for applications using AI.
|
|
24
|
+
- NIST Secure Software Development Framework (SSDF).
|
|
25
|
+
- Applicable privacy and data protection legislation.
|
|
26
|
+
|
|
27
|
+
Select security controls according to actual risks, data sensitivity and regulatory requirements.
|
|
28
|
+
|
|
29
|
+
For high-risk applications, evaluate an appropriately demanding ASVS verification level and document the chosen requirements.
|
|
30
|
+
|
|
31
|
+
Never claim certification or compliance without supporting evidence.
|
|
32
|
+
|
|
33
|
+
## 3. Threat Modeling
|
|
34
|
+
|
|
35
|
+
Before developing or significantly modifying security-sensitive functionality:
|
|
36
|
+
|
|
37
|
+
1. Identify assets requiring protection.
|
|
38
|
+
2. Identify actors and trust boundaries.
|
|
39
|
+
3. Map data flows and external dependencies.
|
|
40
|
+
4. Identify credible attack scenarios.
|
|
41
|
+
5. Estimate likelihood and impact.
|
|
42
|
+
6. Define preventive, detective and recovery controls.
|
|
43
|
+
7. Document residual risks.
|
|
44
|
+
8. Define security acceptance criteria.
|
|
45
|
+
|
|
46
|
+
Use recognized threat-modeling methods such as STRIDE where appropriate.
|
|
47
|
+
|
|
48
|
+
Require human approval for material residual risks.
|
|
49
|
+
|
|
50
|
+
## 4. Authentication
|
|
51
|
+
|
|
52
|
+
Use proven authentication frameworks and identity providers.
|
|
53
|
+
|
|
54
|
+
Requirements:
|
|
55
|
+
|
|
56
|
+
- Secure password hashing when passwords are managed directly.
|
|
57
|
+
- MFA or passkeys when appropriate to the risk.
|
|
58
|
+
- Protection against credential stuffing and brute-force attacks.
|
|
59
|
+
- Secure password reset and account recovery.
|
|
60
|
+
- Session expiration and revocation.
|
|
61
|
+
- Secure handling of authentication tokens.
|
|
62
|
+
- Protection against session fixation and hijacking.
|
|
63
|
+
- Authentication event monitoring.
|
|
64
|
+
- Additional verification for sensitive account operations.
|
|
65
|
+
|
|
66
|
+
Never implement custom cryptographic authentication protocols without a compelling, reviewed justification.
|
|
67
|
+
|
|
68
|
+
## 5. Authorization
|
|
69
|
+
|
|
70
|
+
Authentication does not imply permission to access a resource.
|
|
71
|
+
|
|
72
|
+
Requirements:
|
|
73
|
+
|
|
74
|
+
- Enforce authorization on the server.
|
|
75
|
+
- Validate ownership or permitted access for every protected object.
|
|
76
|
+
- Apply least privilege.
|
|
77
|
+
- Deny access by default.
|
|
78
|
+
- Validate roles and permissions at every relevant boundary.
|
|
79
|
+
- Protect administrative operations.
|
|
80
|
+
- Enforce organization and tenant isolation.
|
|
81
|
+
- Test horizontal and vertical privilege escalation.
|
|
82
|
+
- Prevent insecure direct object references.
|
|
83
|
+
|
|
84
|
+
Never rely solely on frontend permission checks.
|
|
85
|
+
|
|
86
|
+
## 6. API Security
|
|
87
|
+
|
|
88
|
+
Protect all relevant API entry points.
|
|
89
|
+
|
|
90
|
+
Requirements:
|
|
91
|
+
|
|
92
|
+
- Validate inputs using explicit schemas.
|
|
93
|
+
- Enforce authentication and authorization.
|
|
94
|
+
- Apply appropriate rate limits and quotas.
|
|
95
|
+
- Limit request sizes and resource consumption.
|
|
96
|
+
- Prevent injection and unsafe query construction.
|
|
97
|
+
- Protect against SSRF where external requests are supported.
|
|
98
|
+
- Handle CORS deliberately.
|
|
99
|
+
- Use CSRF protection where applicable.
|
|
100
|
+
- Use secure error responses.
|
|
101
|
+
- Avoid sensitive data in API responses.
|
|
102
|
+
- Apply timeouts and bounded retries.
|
|
103
|
+
- Validate webhook authenticity and replay protection.
|
|
104
|
+
- Use idempotency for operations vulnerable to duplication.
|
|
105
|
+
|
|
106
|
+
Never expose internal diagnostic details or secrets to unauthorized clients.
|
|
107
|
+
|
|
108
|
+
## 7. Web Application Security
|
|
109
|
+
|
|
110
|
+
Evaluate:
|
|
111
|
+
|
|
112
|
+
- Cross-site scripting.
|
|
113
|
+
- Cross-site request forgery.
|
|
114
|
+
- Injection vulnerabilities.
|
|
115
|
+
- Insecure redirects.
|
|
116
|
+
- Unsafe file uploads.
|
|
117
|
+
- Clickjacking.
|
|
118
|
+
- Content Security Policy.
|
|
119
|
+
- Security-related HTTP headers.
|
|
120
|
+
- Secure cookies.
|
|
121
|
+
- Session handling.
|
|
122
|
+
- Browser storage of sensitive data.
|
|
123
|
+
- Third-party scripts and supply-chain exposure.
|
|
124
|
+
|
|
125
|
+
Prefer well-maintained framework security mechanisms over custom implementations.
|
|
126
|
+
|
|
127
|
+
## 8. iOS and Android Security
|
|
128
|
+
|
|
129
|
+
Follow applicable OWASP MASVS requirements.
|
|
130
|
+
|
|
131
|
+
Requirements:
|
|
132
|
+
|
|
133
|
+
- Store sensitive credentials using iOS Keychain or Android Keystore-backed mechanisms where appropriate.
|
|
134
|
+
- Never embed privileged backend secrets in mobile applications.
|
|
135
|
+
- Use secure network communication.
|
|
136
|
+
- Validate authentication and authorization on the backend.
|
|
137
|
+
- Protect sensitive local storage.
|
|
138
|
+
- Minimize permissions.
|
|
139
|
+
- Handle lost, stolen and compromised devices appropriately.
|
|
140
|
+
- Consider device integrity and application attestation where justified.
|
|
141
|
+
- Protect deep links and inter-application communication.
|
|
142
|
+
- Validate incoming push-notification data.
|
|
143
|
+
- Review WebView usage and JavaScript bridges.
|
|
144
|
+
- Apply certificate pinning only when justified and with a safe rotation and recovery strategy.
|
|
145
|
+
- Consider older mobile app versions when evolving backend contracts.
|
|
146
|
+
|
|
147
|
+
Never assume that obfuscation or client-side protections can replace server-side security.
|
|
148
|
+
|
|
149
|
+
## 9. Database Security
|
|
150
|
+
|
|
151
|
+
Requirements:
|
|
152
|
+
|
|
153
|
+
- Apply least-privilege database roles.
|
|
154
|
+
- Restrict direct database exposure.
|
|
155
|
+
- Enforce resource and tenant isolation.
|
|
156
|
+
- Validate referential integrity.
|
|
157
|
+
- Use parameterized queries.
|
|
158
|
+
- Protect privileged operations.
|
|
159
|
+
- Audit sensitive schema functions.
|
|
160
|
+
- Encrypt connections.
|
|
161
|
+
- Protect database backups.
|
|
162
|
+
- Test restoration.
|
|
163
|
+
- Review database logs for sensitive data exposure.
|
|
164
|
+
|
|
165
|
+
For Supabase specifically:
|
|
166
|
+
|
|
167
|
+
- Enable and verify RLS on applicable exposed tables.
|
|
168
|
+
- Review SELECT, INSERT, UPDATE and DELETE policies.
|
|
169
|
+
- Review SQL grants and schema privileges.
|
|
170
|
+
- Audit SECURITY DEFINER functions.
|
|
171
|
+
- Protect service_role and other privileged credentials.
|
|
172
|
+
- Verify Storage bucket and object access.
|
|
173
|
+
- Review Realtime authorization.
|
|
174
|
+
- Secure Edge Functions.
|
|
175
|
+
- Validate multi-user and multi-tenant isolation.
|
|
176
|
+
- Test policies using accounts with different permissions.
|
|
177
|
+
|
|
178
|
+
Never assume that RLS alone guarantees complete database security.
|
|
179
|
+
|
|
180
|
+
## 10. Secrets and Cryptography
|
|
181
|
+
|
|
182
|
+
Requirements:
|
|
183
|
+
|
|
184
|
+
- Never hardcode secrets.
|
|
185
|
+
- Never commit credentials to Git.
|
|
186
|
+
- Never expose privileged secrets to browser or mobile clients.
|
|
187
|
+
- Never include secrets in logs, documentation or AI prompts.
|
|
188
|
+
- Use appropriate secret-management services.
|
|
189
|
+
- Rotate and revoke compromised credentials.
|
|
190
|
+
- Apply least privilege to machine credentials.
|
|
191
|
+
- Use established cryptographic libraries.
|
|
192
|
+
- Use modern TLS configurations.
|
|
193
|
+
- Encrypt sensitive information at rest where appropriate.
|
|
194
|
+
- Establish secure key lifecycle management.
|
|
195
|
+
- Protect signing keys, encryption keys and recovery credentials.
|
|
196
|
+
|
|
197
|
+
Never invent custom encryption algorithms.
|
|
198
|
+
|
|
199
|
+
## 11. Payments and Financial Operations
|
|
200
|
+
|
|
201
|
+
Where payments are implemented:
|
|
202
|
+
|
|
203
|
+
- Use established payment providers.
|
|
204
|
+
- Minimize exposure to payment-card information.
|
|
205
|
+
- Do not handle raw card data unless explicitly required and supported by appropriate PCI DSS controls.
|
|
206
|
+
- Validate payment-provider webhooks.
|
|
207
|
+
- Prevent replay attacks and duplicate processing.
|
|
208
|
+
- Use idempotency keys.
|
|
209
|
+
- Verify payment status on trusted systems.
|
|
210
|
+
- Separate payment authorization from fulfillment.
|
|
211
|
+
- Protect refunds and administrative financial operations.
|
|
212
|
+
- Maintain appropriate audit trails.
|
|
213
|
+
- Test partial failures and reconciliation procedures.
|
|
214
|
+
|
|
215
|
+
Never trust client-side payment confirmation as definitive evidence of successful payment.
|
|
216
|
+
|
|
217
|
+
## 12. AI and Agent Security
|
|
218
|
+
|
|
219
|
+
For AI-powered applications:
|
|
220
|
+
|
|
221
|
+
- Treat external documents, emails, webpages and tool responses as untrusted input.
|
|
222
|
+
- Defend against prompt injection.
|
|
223
|
+
- Restrict agent tool permissions.
|
|
224
|
+
- Validate model-generated outputs before using them in sensitive operations.
|
|
225
|
+
- Prevent data exfiltration through tools.
|
|
226
|
+
- Limit external service access.
|
|
227
|
+
- Require approval for irreversible or high-impact operations.
|
|
228
|
+
- Apply quotas and cost controls.
|
|
229
|
+
- Protect personal information and confidential business data.
|
|
230
|
+
- Evaluate model behavior using representative test cases.
|
|
231
|
+
- Log relevant operational metadata without exposing sensitive content.
|
|
232
|
+
|
|
233
|
+
Never grant an AI agent unrestricted production access by default.
|
|
234
|
+
|
|
235
|
+
## 13. Dependency and Supply Chain Security
|
|
236
|
+
|
|
237
|
+
Requirements:
|
|
238
|
+
|
|
239
|
+
- Review new dependencies.
|
|
240
|
+
- Prefer maintained and reputable packages.
|
|
241
|
+
- Use dependency locking and reproducible builds where supported.
|
|
242
|
+
- Review licenses.
|
|
243
|
+
- Detect known vulnerabilities.
|
|
244
|
+
- Scan for exposed secrets.
|
|
245
|
+
- Protect CI/CD credentials.
|
|
246
|
+
- Restrict package publishing privileges.
|
|
247
|
+
- Use trusted build and deployment workflows.
|
|
248
|
+
- Investigate unexpected package behavior.
|
|
249
|
+
- Apply security updates according to risk and compatibility.
|
|
250
|
+
|
|
251
|
+
Never introduce unknown packages simply because an AI-generated solution recommends them.
|
|
252
|
+
|
|
253
|
+
## 14. Infrastructure Security
|
|
254
|
+
|
|
255
|
+
Requirements:
|
|
256
|
+
|
|
257
|
+
- Apply least privilege to infrastructure identities.
|
|
258
|
+
- Protect administrative interfaces.
|
|
259
|
+
- Restrict unnecessary public exposure.
|
|
260
|
+
- Use secure network and firewall configurations.
|
|
261
|
+
- Separate development, staging and production appropriately.
|
|
262
|
+
- Protect infrastructure configuration and deployment credentials.
|
|
263
|
+
- Monitor resource exhaustion.
|
|
264
|
+
- Implement relevant DDoS mitigations.
|
|
265
|
+
- Apply secure defaults.
|
|
266
|
+
- Maintain tested backup and recovery procedures.
|
|
267
|
+
- Document infrastructure changes.
|
|
268
|
+
- Review third-party integrations.
|
|
269
|
+
|
|
270
|
+
## 15. Logging and Monitoring
|
|
271
|
+
|
|
272
|
+
Implement risk-appropriate:
|
|
273
|
+
|
|
274
|
+
- Structured security logs.
|
|
275
|
+
- Authentication and authorization event monitoring.
|
|
276
|
+
- Administrative activity tracking.
|
|
277
|
+
- API abuse detection.
|
|
278
|
+
- Suspicious traffic alerts.
|
|
279
|
+
- Dependency vulnerability alerts.
|
|
280
|
+
- Infrastructure monitoring.
|
|
281
|
+
- Incident escalation.
|
|
282
|
+
- Data-access audit trails.
|
|
283
|
+
- Retention and access policies for logs.
|
|
284
|
+
|
|
285
|
+
Never record passwords, access tokens or other secrets in logs.
|
|
286
|
+
|
|
287
|
+
Minimize personal data in telemetry.
|
|
288
|
+
|
|
289
|
+
## 16. Incident Response
|
|
290
|
+
|
|
291
|
+
Establish procedures for:
|
|
292
|
+
|
|
293
|
+
1. Detection.
|
|
294
|
+
2. Classification.
|
|
295
|
+
3. Containment.
|
|
296
|
+
4. Investigation.
|
|
297
|
+
5. Credential revocation when required.
|
|
298
|
+
6. Recovery.
|
|
299
|
+
7. Legal and regulatory assessment.
|
|
300
|
+
8. Notification when legally required.
|
|
301
|
+
9. Post-incident analysis.
|
|
302
|
+
10. Corrective actions.
|
|
303
|
+
|
|
304
|
+
For personal data breaches, evaluate notification obligations under applicable law, including GDPR Articles 33 and 34 where relevant.
|
|
305
|
+
|
|
306
|
+
Do not assume every security incident automatically requires notification within 72 hours.
|
|
307
|
+
|
|
308
|
+
## 17. Security Verification
|
|
309
|
+
|
|
310
|
+
For significant security-sensitive changes:
|
|
311
|
+
|
|
312
|
+
- Perform relevant static analysis.
|
|
313
|
+
- Evaluate dependency vulnerabilities.
|
|
314
|
+
- Run secret scanning.
|
|
315
|
+
- Test authentication.
|
|
316
|
+
- Test authorization.
|
|
317
|
+
- Test tenant isolation.
|
|
318
|
+
- Test relevant API abuse scenarios.
|
|
319
|
+
- Review cryptographic usage.
|
|
320
|
+
- Verify configuration and infrastructure permissions.
|
|
321
|
+
- Validate security-related regressions.
|
|
322
|
+
- Perform dynamic testing and authorized penetration testing where warranted.
|
|
323
|
+
|
|
324
|
+
Use independent review for high-risk systems when justified.
|
|
325
|
+
|
|
326
|
+
Never claim a security test passed without executing it.
|
|
327
|
+
|
|
328
|
+
## 18. Release Security Gates
|
|
329
|
+
|
|
330
|
+
Before production release, verify:
|
|
331
|
+
|
|
332
|
+
- Applicable security requirements are documented.
|
|
333
|
+
- Critical security findings are resolved or subject to explicitly approved risk handling.
|
|
334
|
+
- Relevant authorization tests pass.
|
|
335
|
+
- Secrets are protected.
|
|
336
|
+
- Dependency risks are reviewed.
|
|
337
|
+
- Security-sensitive configurations are verified.
|
|
338
|
+
- Backups and recovery procedures are available.
|
|
339
|
+
- Monitoring and incident response procedures exist.
|
|
340
|
+
- Residual risks are documented.
|
|
341
|
+
- Required human approvals are complete.
|
|
342
|
+
|
|
343
|
+
A successful build alone is not evidence of security.
|
|
344
|
+
|
|
345
|
+
## 19. Change Management
|
|
346
|
+
|
|
347
|
+
Before significant security-related changes:
|
|
348
|
+
|
|
349
|
+
1. Inspect current functionality.
|
|
350
|
+
2. Identify affected security boundaries.
|
|
351
|
+
3. Explain risks and proposed mitigations.
|
|
352
|
+
4. Evaluate backward compatibility.
|
|
353
|
+
5. Propose tests and rollback procedures.
|
|
354
|
+
6. Obtain explicit approval.
|
|
355
|
+
7. Implement only the approved scope.
|
|
356
|
+
8. Verify the results.
|
|
357
|
+
9. Report unresolved risks.
|
|
358
|
+
|
|
359
|
+
Stop and request approval if unexpected risks or changes of scope arise.
|
|
360
|
+
|
|
361
|
+
## 20. Final Security Principles
|
|
362
|
+
|
|
363
|
+
Assume breach.
|
|
364
|
+
Verify explicitly.
|
|
365
|
+
Apply least privilege.
|
|
366
|
+
Minimize attack surfaces.
|
|
367
|
+
Protect data at every boundary.
|
|
368
|
+
Never trust client-side authorization.
|
|
369
|
+
Never expose privileged secrets.
|
|
370
|
+
Validate with evidence.
|
|
371
|
+
Monitor continuously.
|
|
372
|
+
Prepare for recovery.
|
|
373
|
+
Never weaken security silently.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Optional Claude Code plugin
|
|
2
|
+
|
|
3
|
+
The standalone CLI is the complete installation path for automatic policy plus skills. The optional plugin distributes the six skills only. Installing it does not activate AGENTS.md or a global CLAUDE.md policy. Use the CLI for that requirement.
|
|
4
|
+
|
|
5
|
+
## Prepared artifacts
|
|
6
|
+
|
|
7
|
+
`npm run build` creates:
|
|
8
|
+
|
|
9
|
+
- `dist/claude-plugin/.claude-plugin/plugin.json`.
|
|
10
|
+
- Six `dist/claude-plugin/skills/<name>/SKILL.md` files.
|
|
11
|
+
- Copied domain documents, templates and AGENTS.md with plugin-relative references.
|
|
12
|
+
- `.claude-plugin/marketplace.json`, with a relative source of `./dist/claude-plugin`.
|
|
13
|
+
|
|
14
|
+
The plugin has no hooks, commands that execute shell code, MCP servers, external services or automatic permission changes. Skills are namespaced, for example `/global-engineering-standards:engineering-security-standards-check`. The local marketplace name is `enki-engineering-standards`.
|
|
15
|
+
|
|
16
|
+
## Local validation and trial
|
|
17
|
+
|
|
18
|
+
After building, the vendor CLI can validate the plugin directory and marketplace manifest with `claude plugin validate`. For a temporary trial, use `claude --plugin-dir /path/to/reviewed-checkout/dist/claude-plugin` inside an isolated home/project. To persistently install a local marketplace, the documented commands are:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
claude plugin marketplace add /path/to/reviewed-checkout
|
|
22
|
+
claude plugin install global-engineering-standards@enki-engineering-standards
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
These persistent commands modify the selected Claude configuration and are documentation only; they were not run against the maintainer's real configuration. Avoid enabling both plugin skills and standalone Claude skill copies unless duplicate namespaced availability is intentional.
|
|
26
|
+
|
|
27
|
+
## Distribution limitation
|
|
28
|
+
|
|
29
|
+
The marketplace currently references a generated, ignored `dist/` directory. A raw Git checkout without `npm run build` cannot install the plugin. Do not advertise GitHub marketplace installation yet. A future plugin release must ship a complete generated marketplace directory or adopt a reviewed artifact-hosting path. The npm package intentionally ships the standalone CLI; it does not include the generated plugin tree.
|
|
30
|
+
|
|
31
|
+
Official format sources: [plugin manifests](https://code.claude.com/docs/en/plugins-reference), [marketplaces](https://code.claude.com/docs/en/plugin-marketplaces). See [actual validation results](validation.md) for the exact boundary of testing; schema validation does not establish semantic behavior in a model session.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Agent compatibility
|
|
2
|
+
|
|
3
|
+
Official documentation reviewed on 2026-10-20. Documentation conformity and local filesystem tests are distinct from a successful authenticated agent session. No model session or paid inference was required for this preparation.
|
|
4
|
+
|
|
5
|
+
## Claude Code
|
|
6
|
+
|
|
7
|
+
The CLI writes user policy to `~/.claude/CLAUDE.md` or project policy to `CLAUDE.md`, and copies skills into the corresponding `.claude/skills/<name>/SKILL.md`. `CLAUDE_CONFIG_DIR` is honored for global configuration. Existing settings, permissions, MCP connections and unrelated skills remain untouched.
|
|
8
|
+
|
|
9
|
+
Policy is embedded in a managed block rather than relying on import parsing or AGENTS.md fallback behavior. This avoids uncertainty with import paths containing spaces and version-dependent direct AGENTS.md loading. Claude configuration or enterprise policy can still exclude project instructions or disable local skills. Restart and verify discovery in the actual supported client.
|
|
10
|
+
|
|
11
|
+
Sources: [Claude memory](https://code.claude.com/docs/en/memory), [Claude skills](https://code.claude.com/docs/en/skills), [Claude settings](https://code.claude.com/docs/en/settings).
|
|
12
|
+
|
|
13
|
+
## Codex
|
|
14
|
+
|
|
15
|
+
Global policy goes to `$CODEX_HOME/AGENTS.md`, defaulting to `~/.codex/AGENTS.md`. Project policy goes to `AGENTS.md`. Current documented skill discovery uses `~/.agents/skills` for user skills and `.agents/skills` within projects. The CLI does not install new skills into the older `.codex/skills` location or remove existing ones there.
|
|
16
|
+
|
|
17
|
+
A nonempty `AGENTS.override.md` at the managed instruction location causes a conflict. Codex combines project instructions subject to a default 32 KiB budget. The installer checks its destination file size, but does not parse or change `config.toml`, inspect every ancestor's policy, or override custom size limits. Existing skills elsewhere or enterprise settings may shadow/disable the installed copies. The user must inspect actual discovery after restarting.
|
|
18
|
+
|
|
19
|
+
Sources: [Codex instruction discovery](https://developers.openai.com/codex/guides/agents-md), [Codex skill locations](https://developers.openai.com/codex/skills).
|
|
20
|
+
|
|
21
|
+
## Platform and path behavior
|
|
22
|
+
|
|
23
|
+
The CLI uses Node filesystem APIs, path handling and exclusive file locks, with no shell-specific install commands or symlinks. Windows path layouts are unit-tested; full native Windows and Linux results require running the prepared CI matrix. macOS filesystem behavior is validated locally.
|
|
24
|
+
|
|
25
|
+
Project references are relative to their containing file, so a checkout can move. Global references are absolute; rerun from the same configuration roots. Moving a global installation or changing environment overrides without reinstalling is unsupported. Symlinked configuration directories and instruction files are deliberately refused rather than followed.
|
|
26
|
+
|
|
27
|
+
Node 22/24 are CI targets. Minimum Node support does not imply every agent version supports these conventions. Agent cloud environments, sandbox read restrictions, remote home mappings, corporate policy, custom document budgets and future vendor changes need separate validation. This framework does not claim vendor endorsement.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Updates, backups and recovery
|
|
2
|
+
|
|
3
|
+
An installation's state is `.engineering-standards/` inside the selected home or project. It contains `framework/`, `manifest.json`, a temporary `operation.lock`, and `transactions/`.
|
|
4
|
+
|
|
5
|
+
The manifest records a schema version, package version, scope, installed agents, file hashes and exact managed instruction blocks. It stores logical target identifiers, not arbitrary destination paths. Target paths are derived from scope and current configuration roots. Do not change those roots between install and recovery.
|
|
6
|
+
|
|
7
|
+
Before changing files, the CLI validates the entire plan and records before/after snapshots and modes in a private transaction journal. Each file uses a same-directory temporary file, a flush, and a rename. Caught failures restore completed writes if they still match expected content. The transaction remains available for inspection. Empty directories may remain after a failed installation or uninstall; no recursive cleanup is performed.
|
|
8
|
+
|
|
9
|
+
## Routine rollback
|
|
10
|
+
|
|
11
|
+
Run `rollback --dry-run` with the original scope, then `rollback`. This targets the newest transaction not already rolled back. A rollback refuses to overwrite later user edits. Each successful rollback permits stepping back one more transaction. Uninstall can be rolled back while its snapshots remain available.
|
|
12
|
+
|
|
13
|
+
Snapshots are backups, not encrypted archives. They can contain private user instructions. Exclude `transactions/` and `operation.lock` from source control. Backups are retained until you explicitly remove them after reviewing retention and recovery needs. Repeated no-op installations create no new transaction backup.
|
|
14
|
+
|
|
15
|
+
## Conflicts
|
|
16
|
+
|
|
17
|
+
If an owned file changed, copy your work to a safe location and review the difference against the journal. Restore the expected managed content only if you intend to relinquish those edits; then rerun the operation. Do not remove or rewrite the manifest to force deletion. User edits outside a managed instruction block are preserved by update and uninstall, but a whole-transaction rollback requires the exact recorded after-state.
|
|
18
|
+
|
|
19
|
+
Unknown same-named skills are never adopted. Rename or move them yourself only after considering agent discovery and preserving a backup. Empty skill directories are reusable.
|
|
20
|
+
|
|
21
|
+
## Interrupted process
|
|
22
|
+
|
|
23
|
+
A process killed before releasing its lock leaves `operation.lock`. The CLI will not guess whether a process is still active. Inspect running processes and the newest journal, preserve a copy, and remove only the stale lock once you are certain no installer is running. Then run `rollback --dry-run`, followed by `rollback`. A pending journal accepts files in either their recorded before or after state, supporting interruption during both installation and rollback.
|
|
24
|
+
|
|
25
|
+
`doctor` reports a missing/invalid manifest, missing or edited files, override conflicts, active/stale locks and pending transactions. A crash during the first installation can occur before the manifest exists; inspect `transactions/` and use rollback directly.
|
|
26
|
+
|
|
27
|
+
A crash before the initial journal is fully written makes no target modifications; an orphan `.ges-*.tmp` file may remain. Review such files manually. File flushes and atomic renames are not a guarantee of cross-file atomicity or power-loss durability on every filesystem. Restore from an independent backup if journals are damaged.
|
|
28
|
+
|
|
29
|
+
Windows ACLs and POSIX ownership/extended attributes are not fully serialized. Existing file permission bits are preserved where the platform supports them. Do not run this installer as a privileged administrator or in directories writable by untrusted users.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Release preparation and publication
|
|
2
|
+
|
|
3
|
+
**Nirox Morais** is the project author and copyright owner; **Enki-DEV-expert** is the GitHub account and project maintainer responsible for authorizing publication. This release preparation creates no tags, npm publication or GitHub releases.
|
|
4
|
+
|
|
5
|
+
## Before publishing the repository
|
|
6
|
+
|
|
7
|
+
1. Review all added files and the original-content checksum report. Existing untracked standards must not be discarded.
|
|
8
|
+
2. The configured public repository target is `Enki-DEV-expert/engineering-standards`; confirm that the repository was created at this address before publishing. Package and citation metadata now use this URL.
|
|
9
|
+
3. Enable and test private vulnerability reporting. Replace the private security/conduct channel placeholders with real maintainer-approved channels.
|
|
10
|
+
4. Review the MIT copyright, authorship, issue templates, contribution process and residual security risks.
|
|
11
|
+
5. Configure branch/tag protection, required CI checks and reviewed dependency updates. Run the prepared Linux/macOS/Windows matrix; local macOS results do not establish other platforms.
|
|
12
|
+
6. Review and cryptographically verify the GitHub Action commit pins against upstream releases and security advisories. They are deliberately pinned; Dependabot may propose reviewed updates.
|
|
13
|
+
7. Personally create signed commits and an annotated signed release tag only after approving the diff. See [signing](signing.md). Do not add AI co-authorship trailers.
|
|
14
|
+
|
|
15
|
+
## Before publishing npm
|
|
16
|
+
|
|
17
|
+
The proposed name is `@enki-dev-expert/global-engineering-standards`. A GitHub username does not establish npm scope ownership. Confirm scope control, public-package availability and the final package name first. Update package metadata, lockfile and documentation if the name changes.
|
|
18
|
+
|
|
19
|
+
Run:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
npm ci --ignore-scripts
|
|
23
|
+
npm run check
|
|
24
|
+
npm run package:check
|
|
25
|
+
npm audit
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The package smoke check packs into a temporary directory with lifecycle scripts disabled, checks an explicit file allowlist, installs/runs/uninstalls the packed CLI in an isolated home/project and copies the tested tarball plus SHA256SUMS into `dist/artifacts/`. It does not publish anything. Review the actual tarball contents, dependency advisories and checksum before release.
|
|
29
|
+
|
|
30
|
+
Confirm `package.json`, `CITATION.cff` and the GitHub repository all identify `Enki-DEV-expert/engineering-standards`. Synchronize package, plugin and changelog versions. Add a release date only when actually released.
|
|
31
|
+
|
|
32
|
+
Configure npm trusted publishing for the exact GitHub owner, repository, `release.yml` and `npm-release` environment. Protect that environment with a human approval and restrict deployment tags. Enable GitHub private vulnerability reporting and npm account protections before publication. Bootstrap a new npm package manually through the account's approved workflow if trusted-publisher configuration requires an existing package; this preparation does not assume a first-publish identity exists.
|
|
33
|
+
|
|
34
|
+
The prepared workflow uses GitHub-hosted runners and OIDC without a stored npm token. npm documents Node >=22.14.0 and npm >=11.5.1 for trusted publishing; verify the runner's installed versions at release time. Sources: [npm trusted publishing](https://docs.npmjs.com/trusted-publishers/), [npm provenance](https://docs.npmjs.com/generating-provenance-statements/).
|
|
35
|
+
|
|
36
|
+
## Prepared release workflow
|
|
37
|
+
|
|
38
|
+
`.github/workflows/release.yml` has only a manual trigger. Its verification job requires repository variable `NPM_RELEASE_ENABLED=true`, the exact confirmation text, and a version tag matching package.json. It checks repository identity, version, annotated signature presence, authorship trailers, all quality gates and package contents. **Signature presence is not cryptographic trust verification**: verify the signed commit/tag locally using the trusted maintainer key before approving the protected environment.
|
|
39
|
+
|
|
40
|
+
The publish job receives only `contents: read` and `id-token: write`, downloads the tested artifact, verifies its SHA-256 and publishes that tarball with provenance and lifecycle scripts disabled. Artifacts expire after seven days. It does not create a GitHub release. Neither enabling the gate nor dispatching the workflow was performed in this preparation.
|
|
41
|
+
|
|
42
|
+
The maintainer must establish the protected environment before setting the enable variable; a workflow file alone does not configure GitHub approvals. Never run publication from a pull-request context or supply a long-lived token as a workaround for missing OIDC setup.
|
|
43
|
+
|
|
44
|
+
## Optional plugin release
|
|
45
|
+
|
|
46
|
+
The local marketplace points at generated files. A raw repository checkout without a build is not a ready remote marketplace. Before advertising a marketplace URL, prepare a complete marketplace artifact with the plugin tree present, verify it with Claude Code and test an isolated install. No remote marketplace availability is currently claimed.
|
|
47
|
+
|
|
48
|
+
## After a future release
|
|
49
|
+
|
|
50
|
+
Verify npm provenance against the expected repository/workflow/ref, download the published tarball, compare its checksum, and smoke-test in a clean environment. Record the actual release in CHANGELOG.md and citation metadata. If a defect appears, deprecate or supersede according to npm policy and coordinate a fix; do not assume package unpublication is always available or safe.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Installer security and privacy review
|
|
2
|
+
|
|
3
|
+
Scope: local CLI source, bundled standards, tests, package boundary and prepared workflows. Procedures applied: engineering-safe-implementation, engineering-security-standards-check and engineering-architecture-review. This is an implementation review, not independent penetration testing or certification.
|
|
4
|
+
|
|
5
|
+
## Assets and trust boundaries
|
|
6
|
+
|
|
7
|
+
Assets are existing agent instructions/skills, private configuration, project files, installation state and release credentials. Inputs include CLI arguments, scope/environment paths, bundled content, local manifests/journals and existing files. The CLI is intentionally offline and executes no external programs. Only the developer build/test and future release workflows use external tools.
|
|
8
|
+
|
|
9
|
+
The package and current OS user are trusted. Existing instructions may be sensitive. Other users must not have write access to the installation tree. An attacker controlling the same account or replacing the executable/package can bypass a local ownership scheme; checksums do not authenticate a maliciously replaced baseline.
|
|
10
|
+
|
|
11
|
+
## Controls and evidence
|
|
12
|
+
|
|
13
|
+
| Threat | Implemented mitigation | Verification |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| Existing instructions lost | Append owned blocks; preserve other bytes, BOM and line endings | Preservation and uninstall tests |
|
|
16
|
+
| Unrelated skills overwritten | Refuse populated same-named directories | Skill conflict tests |
|
|
17
|
+
| Edited managed content deleted | Verify hashes/blocks before the whole operation | Update/uninstall refusal tests |
|
|
18
|
+
| Path traversal through state | Logical target allowlist; reject unknown keys | Malformed manifest/journal tests |
|
|
19
|
+
| Link redirection | Inspect path components; reject symlinks and hard-linked files | Link refusal tests |
|
|
20
|
+
| Interrupted multi-file write | Preflight, before/after journal, rollback, exclusive lock | Failure-injection and recovery tests |
|
|
21
|
+
| Later edits overwritten by recovery | Exact snapshot comparisons | Rollback conflict tests |
|
|
22
|
+
| Credentials leaked in output | Output logical change names, never snapshot contents | Source review; no telemetry |
|
|
23
|
+
| Accidental publication | Manual workflow, disabled repository-variable gate, protected environment | Workflow review; never dispatched |
|
|
24
|
+
| Dependency execution | Zero runtime dependencies; locked development tools; ignore install scripts in CI | Lockfile and package review |
|
|
25
|
+
|
|
26
|
+
## Residual findings and limitations
|
|
27
|
+
|
|
28
|
+
- **Medium, local trust constraint:** path inspection and rename are not a fully race-free filesystem capability boundary. Concurrent malicious directory replacement can race checks. Mitigation: user-owned trusted directories, no administrator execution, no world-writable destinations; installer locks coordinate this CLI only. Hostile multi-user directory support is not claimed.
|
|
29
|
+
- **Medium, recovery durability constraint:** per-file fsync/rename does not provide a single atomic transaction across all files or guarantee journal durability after power loss. Abrupt termination can leave a lock or temporary file. Mitigation: retained journals, explicit recovery and independent backups for important configuration.
|
|
30
|
+
- **Medium, privacy:** backup journals contain prior user instruction content in base64, not encryption. POSIX permissions restrict newly created files/directories; Windows ACLs are inherited. Mitigation: source-control exclusions, local access restrictions and manual retention review. Existing state directories may have broader pre-existing permissions and must be reviewed by the operator.
|
|
31
|
+
- **Medium, launch prerequisite:** private vulnerability and conduct reporting contacts are not configured by this work. Enable and test private GitHub reporting and supply a conduct contact before launch.
|
|
32
|
+
- **Low, semantic integration:** agent discovery/preference, instruction budgets, corporate restrictions and conflicting user policies can limit activation. `doctor` does not prove model compliance. Use an isolated authenticated session before claiming full runtime compatibility.
|
|
33
|
+
- **Low, supply chain:** pinning reduces drift but does not eliminate compromise. Verify action pins, package contents, dependency advisories and npm provenance at release time.
|
|
34
|
+
|
|
35
|
+
These are reported constraints, not self-approved policy exceptions. The maintainer must review them before publication. No production operations, financial commitments, sensitive external processing, Git commits, pushes or releases are part of this preparation. No command targeted live agent configuration for modification; the exact preservation evidence and metadata limitations are recorded in [validation](validation.md).
|
|
36
|
+
|
|
37
|
+
## Content and policy review
|
|
38
|
+
|
|
39
|
+
All twelve standards and six skills were included in inventory, heading/reference, content-hash and sensitive-pattern checks. The implementation-specific review focused on governance, filesystem/CLI standards, architecture, security, privacy, quality, costs and operational recovery. Original text is unchanged. Fixed home-path examples remain in canonical skills/templates to preserve their behavior; generated copies adapt them to the real destination.
|
|
40
|
+
|
|
41
|
+
Generic domain documents sometimes say to obtain approval before significant work, while governance and skills define prior scoped autonomous authorization. This task has explicit local autonomous authorization; protected publication and production actions remain unapproved. The installer neither rewrites those policies nor attempts to resolve semantic conflicts with a user's other instructions.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Maintainer commit and tag signing
|
|
2
|
+
|
|
3
|
+
The project author and copyright owner is Nirox Morais; the GitHub account and project maintainer is Enki-DEV-expert. Use the maintainer's existing GitHub-associated email and set the commit author name to Nirox Morais. This preparation does not change the persistent Git identity, create signing keys or create tags. Never add AI co-authorship trailers.
|
|
4
|
+
|
|
5
|
+
Before the maintainer commits, inspect the staged diff, confirm author identity and use an existing approved signing key. Git supports GPG or SSH signing; configure the chosen signing method through the maintainer's normal secure key-management process. Keep private keys and passphrases outside this repository. Register the public signing key with GitHub if a verified badge is desired.
|
|
6
|
+
|
|
7
|
+
After review, commands such as these are **manual examples**, not commands executed by this preparation:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
git commit -S -m "Prepare engineering standards distribution"
|
|
11
|
+
git tag -s v0.1.0 -m "Global Engineering Standards 0.1.0"
|
|
12
|
+
git verify-commit HEAD
|
|
13
|
+
git verify-tag v0.1.0
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Use the final approved version, not an assumed release number. Verification must use a trusted signer configuration: GPG trust or an SSH allowed-signers file whose maintainer key fingerprint has been checked out of band. A signature block alone is insufficient.
|
|
17
|
+
|
|
18
|
+
Before any push/publication, verify the tag points to the reviewed commit and that the version matches package.json. Tag protection and the protected release environment should restrict publication to maintainer-reviewed tags. Do not expose signing secrets to pull-request workflows. The prepared release script checks signature presence; cryptographic trust verification remains a required maintainer action before release approval.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Validation record
|
|
2
|
+
|
|
3
|
+
Release preparation date: 2026-10-20. Status: local development and checks completed; publication and full platform/agent runtime certification remain unperformed.
|
|
4
|
+
|
|
5
|
+
## Actual local environment
|
|
6
|
+
|
|
7
|
+
- macOS, Node.js 24.21.0, npm 11.19.0.
|
|
8
|
+
- Development tooling: TypeScript 7.0.2, Biome 2.5.15, Node 22 type definitions 22.20.5, with exact lockfile versions.
|
|
9
|
+
- Vendor CLIs inspected only in temporary homes: Claude Code 2.1.304 and codex-cli 0.163.0.
|
|
10
|
+
|
|
11
|
+
## Executed checks
|
|
12
|
+
|
|
13
|
+
| Check | Actual result |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `npm run check` | Passed: lint, strict type checking, build, 50 tests and standards validation |
|
|
16
|
+
| Isolated installer tests | 50 passed, 0 failed, 0 skipped |
|
|
17
|
+
| `npm run package:check` | Passed: 51 allowlisted package files; packed CLI init, doctor, update, uninstall; offline npm installation and executable discovery |
|
|
18
|
+
| Original content checksums | 23/23 unchanged: AGENTS.md, twelve documents, six skills and four templates |
|
|
19
|
+
| Content validation | Domain/template references, six skill frontmatter records, generated plugin inventory and local Markdown links passed |
|
|
20
|
+
| Repository pattern scan | No matched secret/private-path/AI-trailer indicators in the 64 candidate distributable repository files; bounded heuristics, not a guarantee |
|
|
21
|
+
| `claude plugin validate` | Generated plugin and marketplace both passed, no warnings, with isolated HOME/configuration |
|
|
22
|
+
| YAML parsing | Both workflows, issue forms/config, Dependabot and CITATION.cff parsed successfully using Ruby YAML; not a formal CFF schema certification |
|
|
23
|
+
| Dependency audit | Networked npm installation reported 0 vulnerabilities; subsequent cached/offline npm audit also reported 0. Fresh advisory review remains a release gate |
|
|
24
|
+
| `git diff --check` | Passed, but the repository has no commits and its candidate files are untracked, so this is not a substantive tracked-diff review |
|
|
25
|
+
|
|
26
|
+
The generated tarball and SHA256SUMS are in `dist/artifacts/`, ignored by Git. Regenerating the artifact after documentation edits changes the checksum; use the checksum accompanying the actual reviewed artifact.
|
|
27
|
+
|
|
28
|
+
## Coverage
|
|
29
|
+
|
|
30
|
+
Tests cover global/project scope; Claude-only, Codex-only and both agents; custom configuration roots; repeat installation; preservation of BOM/CRLF/user bytes/settings/unrelated skills; existing skill collisions; real content/version updates and rollback; dry-run; uninstall; interrupted installation; failure injection; locks; altered manifests/backups; missing files; malformed skill metadata; broken document references; symlinks/hard links; Codex overrides and size limits; relocated projects; Windows/POSIX layouts; spaces, Unicode and literal dollar tokens in paths; control-character rejection; and preservation of user resources added inside managed skill directories.
|
|
31
|
+
|
|
32
|
+
Tests create temporary homes and projects and isolate subprocess configuration. No test targets live agent installation directories. There are no production or paid-service tests.
|
|
33
|
+
|
|
34
|
+
## Live configuration preservation
|
|
35
|
+
|
|
36
|
+
A read-only baseline covered 939 entries in the live Claude/Codex instructions, settings and skill trees, including `.agents/skills`. The final comparison found **zero content, symlink-target or inventory changes**. Two files in Claude's synced-skill bookkeeping had different modification timestamps but identical content hashes. Their cause is not established by this comparison; this preparation did not restore or modify those timestamps. This distinction prevents claiming that every live filesystem metadata field remained unchanged. The separate `~/.claude.json` application-state file was not included in the initial content baseline and had a later modification time; its complete preservation cannot be established from this evidence. No cause is attributed and no attempt was made to restore live application state.
|
|
37
|
+
|
|
38
|
+
No installer command targeted the real home or live agent configuration. All vendor CLI validation commands were launched with temporary HOME, USERPROFILE, CODEX_HOME and CLAUDE_CONFIG_DIR values. The baseline contains no private file contents in this repository.
|
|
39
|
+
|
|
40
|
+
## Existing local backup
|
|
41
|
+
|
|
42
|
+
One pre-existing AGENTS.md backup remains in the working directory. It is matched by the original backup ignore rule and is excluded from the npm allowlist. It was preserved rather than deleted. Do not force-add ignored backups during publication.
|
|
43
|
+
|
|
44
|
+
## Unverified boundaries and required follow-up
|
|
45
|
+
|
|
46
|
+
The prepared CI matrix targets Node 22/24 on Linux, macOS and Windows. Those hosted jobs have not run. Native Windows layout unit tests do not substitute for Windows filesystem/ACL tests. Authenticated Claude/Codex instruction loading and semantic behavior have not been exercised by a model session during this preparation.
|
|
47
|
+
|
|
48
|
+
Plugin validation establishes accepted manifest structure; it does not prove runtime invocation, account permissions or automatic policy loading. The plugin is skills-only, and the generated marketplace tree is not yet a publicly distributable Git marketplace.
|
|
49
|
+
|
|
50
|
+
No commits, tags, pushes, GitHub releases, npm publication, marketplace registration or release workflow dispatch were performed. Repository identity, npm scope ownership, private reporting channels, protected release environment, signing trust and fresh upstream security review remain maintainer release prerequisites.
|