arkaos 4.16.0 → 4.18.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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **The Operating System for AI Agent Teams.**
4
4
 
5
- 86 agents. 17 departments. 275 skills. Enterprise frameworks. Multi-runtime. One install.
5
+ 86 agents. 17 departments. 279 skills. Enterprise frameworks. Multi-runtime. One install.
6
6
 
7
7
  ```bash
8
8
  npx arkaos install
package/VERSION CHANGED
@@ -1 +1 @@
1
- 4.16.0
1
+ 4.18.0
package/arka/SKILL.md CHANGED
@@ -25,7 +25,7 @@ measures citation compliance per turn.
25
25
  # ArkaOS — Main Orchestrator
26
26
 
27
27
  > **The Operating System for AI Agent Teams**
28
- > 86 agents. 17 departments. 275 skills. Multi-runtime. Dashboard. Knowledge RAG.
28
+ > 86 agents. 17 departments. 279 skills. Multi-runtime. Dashboard. Knowledge RAG.
29
29
 
30
30
  ## ⛔ Evidence flow — 4 gates (NON-NEGOTIABLE)
31
31
 
@@ -0,0 +1,126 @@
1
+ # Agent provenance classification — the control that makes omission impossible.
2
+ #
3
+ # Mirror of config/skills-provenance.yaml for the agent tree. The parser
4
+ # (core/agents/provenance.py) closes every way of writing a BROKEN
5
+ # provenance block, but it cannot see an agent that never writes one:
6
+ # absence reads as first-party, which is exactly what a forgotten ECC
7
+ # agent port looks like.
8
+ #
9
+ # EVERY agent YAML must be CLASSIFIED — listed in `first_party` below,
10
+ # listed in `derived` below, or declaring a `provenance:` block in its
11
+ # own YAML. An agent in none of the three fails CI by name.
12
+ # See tests/python/test_agent_provenance.py.
13
+ #
14
+ # `first_party` is the baseline: the agents that existed on the cut date,
15
+ # snapshotted once so they need no edits. CLOSED set — do not add to it.
16
+ # A new agent declares its origin in its own YAML; a ported one lands in
17
+ # `derived` with its licence written down, in a diff, in front of a
18
+ # reviewer.
19
+ #
20
+ # What the baseline is and is not:
21
+ # ASSERTED: these are ArkaOS originals.
22
+ # PROVEN: none can be ECC-derived — every one was created before
23
+ # 2026-07-14, the day we first read that repository (git log
24
+ # --diff-filter=A; verified once).
25
+ # The property the control rests on is that the set is CLOSED:
26
+ # anything new must classify itself.
27
+ #
28
+ # Keys are repo-relative agent YAML paths.
29
+ #
30
+ # derived format:
31
+ # departments/<dept>/agents/<slug>.yaml:
32
+ # origin: <lowercase-slug> # e.g. ecc-derived, community
33
+ # source: https://...
34
+ # license: MIT
35
+
36
+ baseline_date: 2026-07-14
37
+
38
+ derived: {}
39
+
40
+ first_party:
41
+ - departments/brand/agents/brand-director.yaml
42
+ - departments/brand/agents/brand-strategist.yaml
43
+ - departments/brand/agents/design-ops/design-ops-lead.yaml
44
+ - departments/brand/agents/design-ops/extraction-script-writer.yaml
45
+ - departments/brand/agents/design-ops/shadcn-padronizer.yaml
46
+ - departments/brand/agents/design-ops/wcag-auditor.yaml
47
+ - departments/brand/agents/ux-designer.yaml
48
+ - departments/brand/agents/ux-researcher.yaml
49
+ - departments/brand/agents/ux-strategist.yaml
50
+ - departments/brand/agents/visual-designer.yaml
51
+ - departments/community/agents/community-manager.yaml
52
+ - departments/community/agents/community-strategist.yaml
53
+ - departments/community/agents/engagement-designer.yaml
54
+ - departments/content/agents/content-strategist.yaml
55
+ - departments/content/agents/production/content-researcher.yaml
56
+ - departments/content/agents/production/info-compiler.yaml
57
+ - departments/content/agents/production/trends-analyst.yaml
58
+ - departments/content/agents/production/video-producer.yaml
59
+ - departments/content/agents/repurpose-distributor.yaml
60
+ - departments/content/agents/scriptwriter.yaml
61
+ - departments/content/agents/viral-engineer.yaml
62
+ - departments/dev/agents/ai-engineering/ai-engineering-lead.yaml
63
+ - departments/dev/agents/architect.yaml
64
+ - departments/dev/agents/backend-core/laravel-eng.yaml
65
+ - departments/dev/agents/backend-core/node-ts-eng.yaml
66
+ - departments/dev/agents/backend-core/python-eng.yaml
67
+ - departments/dev/agents/backend-dev.yaml
68
+ - departments/dev/agents/cto.yaml
69
+ - departments/dev/agents/data-platform/etl-eng.yaml
70
+ - departments/dev/agents/dba.yaml
71
+ - departments/dev/agents/devops-eng.yaml
72
+ - departments/dev/agents/frontend-dev.yaml
73
+ - departments/dev/agents/qa-eng.yaml
74
+ - departments/dev/agents/research-assistant.yaml
75
+ - departments/dev/agents/security-eng.yaml
76
+ - departments/dev/agents/tech-lead.yaml
77
+ - departments/ecom/agents/commerce-engineer.yaml
78
+ - departments/ecom/agents/cro-specialist.yaml
79
+ - departments/ecom/agents/ecom-director.yaml
80
+ - departments/ecom/agents/retention-manager.yaml
81
+ - departments/finance/agents/cfo.yaml
82
+ - departments/finance/agents/financial-analyst.yaml
83
+ - departments/finance/agents/investment-strategist.yaml
84
+ - departments/kb/agents/data-collector.yaml
85
+ - departments/kb/agents/knowledge-curator.yaml
86
+ - departments/kb/agents/knowledge-director.yaml
87
+ - departments/kb/agents/research-analyst.yaml
88
+ - departments/landing/agents/affiliate-manager.yaml
89
+ - departments/landing/agents/conversion-strategist.yaml
90
+ - departments/landing/agents/cro-specialist.yaml
91
+ - departments/landing/agents/sales-copywriter.yaml
92
+ - departments/leadership/agents/culture-coach.yaml
93
+ - departments/leadership/agents/hr-specialist.yaml
94
+ - departments/leadership/agents/leadership-director.yaml
95
+ - departments/marketing/agents/content-marketer.yaml
96
+ - departments/marketing/agents/marketing-director.yaml
97
+ - departments/marketing/agents/paid-specialist.yaml
98
+ - departments/marketing/agents/seo-specialist.yaml
99
+ - departments/ops/agents/automation-engineer.yaml
100
+ - departments/ops/agents/doc-writer.yaml
101
+ - departments/ops/agents/ops-lead.yaml
102
+ - departments/org/agents/chief-of-staff.yaml
103
+ - departments/org/agents/coo.yaml
104
+ - departments/org/agents/okr-steward.yaml
105
+ - departments/org/agents/org-designer.yaml
106
+ - departments/org/agents/people-ops.yaml
107
+ - departments/pm/agents/pm-director.yaml
108
+ - departments/pm/agents/product-owner.yaml
109
+ - departments/pm/agents/scrum-master.yaml
110
+ - departments/pm/agents/strategic-pm.yaml
111
+ - departments/quality/agents/copy-director.yaml
112
+ - departments/quality/agents/cqo.yaml
113
+ - departments/quality/agents/tech-director.yaml
114
+ - departments/saas/agents/cs-manager.yaml
115
+ - departments/saas/agents/growth-engineer.yaml
116
+ - departments/saas/agents/metrics-analyst.yaml
117
+ - departments/saas/agents/revops-lead.yaml
118
+ - departments/saas/agents/saas-strategist.yaml
119
+ - departments/sales/agents/sales-closer.yaml
120
+ - departments/sales/agents/sales-director.yaml
121
+ - departments/sales/agents/sales-ops.yaml
122
+ - departments/sales/agents/sdr.yaml
123
+ - departments/strategy/agents/business-model-designer.yaml
124
+ - departments/strategy/agents/decision-quality.yaml
125
+ - departments/strategy/agents/market-analyst.yaml
126
+ - departments/strategy/agents/strategy-director.yaml
@@ -0,0 +1,357 @@
1
+ # Skill provenance classification — the control that makes omission impossible.
2
+ #
3
+ # The parser (core/skills/provenance.py) closes every way of writing a
4
+ # BROKEN provenance block. It cannot see a skill that never writes one:
5
+ # absence reads as first-party, which is exactly what a forgotten port
6
+ # looks like. A parser is therefore the wrong place to close it.
7
+ #
8
+ # This file closes it. EVERY hand-authored SKILL.md in the repo must be
9
+ # CLASSIFIED — listed in `first_party` below, listed in `derived` below,
10
+ # or declaring `metadata.origin` in its own frontmatter. A skill in none
11
+ # of the three fails CI by name as `unclassified`.
12
+ # See tests/python/test_skill_provenance.py.
13
+ #
14
+ # Coverage is every authored surface, not just department sub-skills:
15
+ # department hubs (departments/<d>/SKILL.md), the orchestrator
16
+ # (arka/SKILL.md) and its meta skills (arka/skills/<s>/) are all here,
17
+ # because a port can land in any of them. The generated trees —
18
+ # plugins/ and marketplace/ — are deliberately NOT listed: they are
19
+ # emitted from departments/ by scripts/marketplace_gen.py and are
20
+ # already byte-drift-gated, so classifying the source classifies them.
21
+ #
22
+ # `first_party` is the baseline: the 275 skills that existed on the cut
23
+ # date, snapshotted once so they need no edits. It is a CLOSED set. Do
24
+ # not add to it — a new skill declares its origin in its own
25
+ # frontmatter, and a ported one lands in `derived` with its licence
26
+ # written down, in a diff, in front of a reviewer.
27
+ #
28
+ # What the baseline IS and IS NOT, stated plainly:
29
+ #
30
+ # ASSERTED, not independently verified: that these 275 are ArkaOS
31
+ # originals. Nobody re-derived each one from scratch to prove it.
32
+ #
33
+ # PROVEN, for the lineage that matters: none of them can be
34
+ # ECC-derived. `git log --diff-filter=A` puts every creation between
35
+ # 2026-03-14 and 2026-07-13 — all of them before 2026-07-14, the day
36
+ # we first read that repository. Zero exceptions.
37
+ #
38
+ # The property the control actually rests on is neither: it is that
39
+ # the set is CLOSED. Anything new must classify itself, whatever the
40
+ # truth about the 275 turns out to be.
41
+ #
42
+ # Residual we accept, on the record: baseline trust is granted to a
43
+ # NAME. Gutting an existing skill and refilling it with someone else's
44
+ # content keeps the name and passes. Per-entry content hashes would
45
+ # close it and are refused — 275 live skills means every legitimate
46
+ # edit would red-line CI until someone regenerated the hash, and a hash
47
+ # people regenerate reflexively is theatre, not a control. The honest
48
+ # defence against a whole-body swap is a diff that visibly replaces an
49
+ # entire skill in front of a reviewer.
50
+ #
51
+ # Keys are repo-relative skill directory paths.
52
+ #
53
+ # derived format:
54
+ # departments/<dept>/skills/<slug>:
55
+ # origin: <lowercase-slug> # e.g. ecc-derived, community
56
+ # source: https://... # where it came from
57
+ # license: MIT # what we are bound by
58
+
59
+ baseline_date: 2026-07-14
60
+
61
+ derived:
62
+ # ECC review lenses (Track C1) — specialised review skills ArkaOS
63
+ # lacked, ported from the MIT-licensed everything-claude-code repo and
64
+ # rewritten in ArkaOS voice with ArkaOS personas.
65
+ departments/dev/skills/silent-failure-hunter:
66
+ origin: ecc-derived
67
+ source: https://github.com/affaan-m/ecc
68
+ license: MIT
69
+ departments/dev/skills/type-design-analyzer:
70
+ origin: ecc-derived
71
+ source: https://github.com/affaan-m/ecc
72
+ license: MIT
73
+ departments/dev/skills/pr-test-analyzer:
74
+ origin: ecc-derived
75
+ source: https://github.com/affaan-m/ecc
76
+ license: MIT
77
+ departments/dev/skills/click-path-audit:
78
+ origin: ecc-derived
79
+ source: https://github.com/affaan-m/ecc
80
+ license: MIT
81
+
82
+ first_party:
83
+ - arka
84
+ - arka/skills/bootstrap-agent
85
+ - arka/skills/checkpoint
86
+ - arka/skills/comfyui
87
+ - arka/skills/conclave
88
+ - arka/skills/costs
89
+ - arka/skills/design-ops
90
+ - arka/skills/dreams
91
+ - arka/skills/flow
92
+ - arka/skills/forge
93
+ - arka/skills/fusion
94
+ - arka/skills/human-writing
95
+ - arka/skills/recipes
96
+ - arka/skills/refine
97
+ - arka/skills/research
98
+ - departments/brand
99
+ - departments/brand/skills/archetype-finder
100
+ - departments/brand/skills/colors
101
+ - departments/brand/skills/design-review
102
+ - departments/brand/skills/design-system
103
+ - departments/brand/skills/identity-system
104
+ - departments/brand/skills/logo-brief
105
+ - departments/brand/skills/mockup-generate
106
+ - departments/brand/skills/naming-evaluate
107
+ - departments/brand/skills/positioning-statement
108
+ - departments/brand/skills/primal-audit
109
+ - departments/brand/skills/ux-audit
110
+ - departments/brand/skills/voice-guide
111
+ - departments/brand/skills/wireframe
112
+ - departments/community
113
+ - departments/community/skills/ai-community
114
+ - departments/community/skills/betting-setup
115
+ - departments/community/skills/business-model
116
+ - departments/community/skills/content-calendar
117
+ - departments/community/skills/events-plan
118
+ - departments/community/skills/gamification-design
119
+ - departments/community/skills/growth-plan
120
+ - departments/community/skills/metrics-track
121
+ - departments/community/skills/moderation
122
+ - departments/community/skills/monetize-plan
123
+ - departments/community/skills/niche-setup
124
+ - departments/community/skills/onboarding-flow
125
+ - departments/community/skills/platform-select
126
+ - departments/community/skills/retention-system
127
+ - departments/content
128
+ - departments/content/skills/ai-workflow
129
+ - departments/content/skills/analytics
130
+ - departments/content/skills/calendar
131
+ - departments/content/skills/content-system
132
+ - departments/content/skills/hook-write
133
+ - departments/content/skills/monetization-plan
134
+ - departments/content/skills/newsletter-write
135
+ - departments/content/skills/platform-optimize
136
+ - departments/content/skills/repurpose-plan
137
+ - departments/content/skills/research-compile
138
+ - departments/content/skills/script-structure
139
+ - departments/content/skills/short-form
140
+ - departments/content/skills/thumbnail-package
141
+ - departments/content/skills/trend-hunt
142
+ - departments/content/skills/video-produce
143
+ - departments/content/skills/video-setup
144
+ - departments/content/skills/viral-design
145
+ - departments/content/skills/youtube-strategy
146
+ - departments/dev
147
+ - departments/dev/skills/adversarial-review
148
+ - departments/dev/skills/agent-design
149
+ - departments/dev/skills/agent-workflow
150
+ - departments/dev/skills/ai-assisted-dev
151
+ - departments/dev/skills/ai-security
152
+ - departments/dev/skills/animated-website
153
+ - departments/dev/skills/api-design
154
+ - departments/dev/skills/app-test
155
+ - departments/dev/skills/architecture-design
156
+ - departments/dev/skills/changelog
157
+ - departments/dev/skills/ci-cd-pipeline
158
+ - departments/dev/skills/clean-code-review
159
+ - departments/dev/skills/code-review
160
+ - departments/dev/skills/codebase-onboard
161
+ - departments/dev/skills/db-design
162
+ - departments/dev/skills/db-schema
163
+ - departments/dev/skills/ddd-model
164
+ - departments/dev/skills/demo-gif
165
+ - departments/dev/skills/dependency-audit
166
+ - departments/dev/skills/deploy
167
+ - departments/dev/skills/devops-pipeline
168
+ - departments/dev/skills/docs
169
+ - departments/dev/skills/env-secrets
170
+ - departments/dev/skills/incident
171
+ - departments/dev/skills/mcp
172
+ - departments/dev/skills/mcp-builder
173
+ - departments/dev/skills/observability
174
+ - departments/dev/skills/onboard
175
+ - departments/dev/skills/performance-audit
176
+ - departments/dev/skills/performance-profiler
177
+ - departments/dev/skills/rag-architect
178
+ - departments/dev/skills/red-team
179
+ - departments/dev/skills/refactor-plan
180
+ - departments/dev/skills/release
181
+ - departments/dev/skills/research
182
+ - departments/dev/skills/runbook
183
+ - departments/dev/skills/scaffold
184
+ - departments/dev/skills/security-audit
185
+ - departments/dev/skills/security-compliance
186
+ - departments/dev/skills/skill-audit
187
+ - departments/dev/skills/spec
188
+ - departments/dev/skills/stack-check
189
+ - departments/dev/skills/tdd-cycle
190
+ - departments/dev/skills/tech-debt
191
+ - departments/ecom
192
+ - departments/ecom/skills/analytics
193
+ - departments/ecom/skills/browse-competitor
194
+ - departments/ecom/skills/cart-recovery
195
+ - departments/ecom/skills/cro-optimize
196
+ - departments/ecom/skills/customer-journey
197
+ - departments/ecom/skills/ecommerce
198
+ - departments/ecom/skills/fulfillment-plan
199
+ - departments/ecom/skills/marketplace-manage
200
+ - departments/ecom/skills/pricing-strategy
201
+ - departments/ecom/skills/product-launch
202
+ - departments/ecom/skills/rfm-segment
203
+ - departments/ecom/skills/social-commerce
204
+ - departments/ecom/skills/store-audit
205
+ - departments/ecom/skills/subscription-model
206
+ - departments/finance
207
+ - departments/finance/skills/budget-plan
208
+ - departments/finance/skills/cashflow-forecast
209
+ - departments/finance/skills/ciso-advisor
210
+ - departments/finance/skills/financial-model
211
+ - departments/finance/skills/pitch-deck
212
+ - departments/finance/skills/scenario-analysis
213
+ - departments/finance/skills/unit-economics
214
+ - departments/finance/skills/valuation-model
215
+ - departments/kb
216
+ - departments/kb/skills/ai-research
217
+ - departments/kb/skills/competitive-intel
218
+ - departments/kb/skills/knowledge
219
+ - departments/kb/skills/knowledge-review
220
+ - departments/kb/skills/learn-content
221
+ - departments/kb/skills/moc-create
222
+ - departments/kb/skills/persona-build
223
+ - departments/kb/skills/research-plan
224
+ - departments/kb/skills/search-kb
225
+ - departments/kb/skills/source-evaluate
226
+ - departments/kb/skills/taxonomy-manage
227
+ - departments/kb/skills/write-as-persona
228
+ - departments/kb/skills/zettelkasten-process
229
+ - departments/landing
230
+ - departments/landing/skills/ab-test
231
+ - departments/landing/skills/affiliate-bridge
232
+ - departments/landing/skills/awareness-diagnose
233
+ - departments/landing/skills/copy-framework
234
+ - departments/landing/skills/email-sequence
235
+ - departments/landing/skills/funnel-design
236
+ - departments/landing/skills/funnel-metrics
237
+ - departments/landing/skills/headline-write
238
+ - departments/landing/skills/landing-gen
239
+ - departments/landing/skills/launch-sequence
240
+ - departments/landing/skills/offer-create
241
+ - departments/landing/skills/optimize-page
242
+ - departments/landing/skills/page-architect
243
+ - departments/landing/skills/persuasion-apply
244
+ - departments/landing/skills/webinar-funnel
245
+ - departments/leadership
246
+ - departments/leadership/skills/change-manage
247
+ - departments/leadership/skills/conflict-resolve
248
+ - departments/leadership/skills/culture-audit
249
+ - departments/leadership/skills/delegation-matrix
250
+ - departments/leadership/skills/disc-assess
251
+ - departments/leadership/skills/feedback-give
252
+ - departments/leadership/skills/hiring-plan
253
+ - departments/leadership/skills/okr-define
254
+ - departments/leadership/skills/performance-review
255
+ - departments/leadership/skills/team-health
256
+ - departments/marketing
257
+ - departments/marketing/skills/ab-test
258
+ - departments/marketing/skills/analytics-report
259
+ - departments/marketing/skills/audience-segment
260
+ - departments/marketing/skills/calendar-plan
261
+ - departments/marketing/skills/cold-email
262
+ - departments/marketing/skills/competitor-analysis
263
+ - departments/marketing/skills/content-audit
264
+ - departments/marketing/skills/email-sequence
265
+ - departments/marketing/skills/growth-loop
266
+ - departments/marketing/skills/marketing-automation
267
+ - departments/marketing/skills/paid-campaign
268
+ - departments/marketing/skills/programmatic-seo
269
+ - departments/marketing/skills/seo-audit
270
+ - departments/marketing/skills/social-strategy
271
+ - departments/ops
272
+ - departments/ops/skills/bottleneck-find
273
+ - departments/ops/skills/dashboard-build
274
+ - departments/ops/skills/gdpr-compliance
275
+ - departments/ops/skills/gtd-setup
276
+ - departments/ops/skills/integration-design
277
+ - departments/ops/skills/iso27001
278
+ - departments/ops/skills/lean-audit
279
+ - departments/ops/skills/metrics-dashboard
280
+ - departments/ops/skills/n8n-flow
281
+ - departments/ops/skills/operations
282
+ - departments/ops/skills/quality-management
283
+ - departments/ops/skills/risk-management
284
+ - departments/ops/skills/soc2-compliance
285
+ - departments/ops/skills/sop-create
286
+ - departments/ops/skills/update
287
+ - departments/ops/skills/workflow-automate
288
+ - departments/ops/skills/zapier-flow
289
+ - departments/org
290
+ - departments/org/skills/compensation-plan
291
+ - departments/org/skills/culture-define
292
+ - departments/org/skills/decision-framework
293
+ - departments/org/skills/hiring-plan
294
+ - departments/org/skills/meeting-optimize
295
+ - departments/org/skills/okr-cadence
296
+ - departments/org/skills/onboarding-design
297
+ - departments/org/skills/org-design
298
+ - departments/org/skills/principles-audit
299
+ - departments/org/skills/remote-setup
300
+ - departments/org/skills/sop-process
301
+ - departments/org/skills/team-assess
302
+ - departments/pm
303
+ - departments/pm/skills/agile-po
304
+ - departments/pm/skills/backlog-groom
305
+ - departments/pm/skills/discovery-plan
306
+ - departments/pm/skills/estimate-forecast
307
+ - departments/pm/skills/impact-map
308
+ - departments/pm/skills/kanban-setup
309
+ - departments/pm/skills/risk-register
310
+ - departments/pm/skills/roadmap-build
311
+ - departments/pm/skills/shape-pitch
312
+ - departments/pm/skills/sprint-plan
313
+ - departments/pm/skills/stakeholder-map
314
+ - departments/pm/skills/standup-run
315
+ - departments/pm/skills/story-write
316
+ - departments/quality
317
+ - departments/saas
318
+ - departments/saas/skills/benchmark-compare
319
+ - departments/saas/skills/churn-analysis
320
+ - departments/saas/skills/customer-success
321
+ - departments/saas/skills/growth-plan
322
+ - departments/saas/skills/gtm-strategy
323
+ - departments/saas/skills/launch-execute
324
+ - departments/saas/skills/leaky-bucket
325
+ - departments/saas/skills/metrics-dashboard
326
+ - departments/saas/skills/micro-saas-stack
327
+ - departments/saas/skills/mvp-build
328
+ - departments/saas/skills/niche-evaluate
329
+ - departments/saas/skills/onboarding-optimize
330
+ - departments/saas/skills/plg-setup
331
+ - departments/saas/skills/pricing-strategy
332
+ - departments/saas/skills/saas-scaffold
333
+ - departments/saas/skills/validate-idea
334
+ - departments/saas/skills/voc-loop
335
+ - departments/sales
336
+ - departments/sales/skills/challenger-sell
337
+ - departments/sales/skills/deal-qualify
338
+ - departments/sales/skills/discovery-call
339
+ - departments/sales/skills/forecast-revenue
340
+ - departments/sales/skills/negotiate-plan
341
+ - departments/sales/skills/objection-handle
342
+ - departments/sales/skills/pipeline-manage
343
+ - departments/sales/skills/pricing-negotiate
344
+ - departments/sales/skills/proposal-write
345
+ - departments/sales/skills/spin-sell
346
+ - departments/strategy
347
+ - departments/strategy/skills/blue-ocean
348
+ - departments/strategy/skills/bmc
349
+ - departments/strategy/skills/board-advisor
350
+ - departments/strategy/skills/cto-advisor
351
+ - departments/strategy/skills/extract-data
352
+ - departments/strategy/skills/five-forces
353
+ - departments/strategy/skills/growth-strategy
354
+ - departments/strategy/skills/moat-analysis
355
+ - departments/strategy/skills/position
356
+ - departments/strategy/skills/premortem
357
+ - departments/strategy/skills/scenario-plan
@@ -0,0 +1,117 @@
1
+ """Agent provenance — supply-chain lineage for every agent YAML.
2
+
3
+ The skill tree got provenance in v4.17.0; agents did not, and the ECC
4
+ teardown puts ~15 derived agents on the roadmap. An ECC agent ported
5
+ today would land with exactly the hole skill provenance closes: no
6
+ origin, no licence trail, indistinguishable from an ArkaOS original.
7
+ This is the agent-side mirror, and it must land before the first agent
8
+ port.
9
+
10
+ An agent YAML may carry a top-level ``provenance`` block:
11
+
12
+ id: silent-failure-hunter
13
+ name: ...
14
+ provenance:
15
+ origin: ecc-derived
16
+ source: https://github.com/affaan-m/ecc
17
+ license: MIT
18
+
19
+ Absent means first-party. The validation rules are the shared
20
+ ``core.provenance`` core (https source, licence required for derived,
21
+ no trail on ``arkaos``). This module only reads the YAML.
22
+
23
+ As with skills, no parser can see the omission vector — a port that
24
+ never writes the block reads as first-party. ``config/agents-provenance.yaml``
25
+ classifies every agent as baseline, derived, or self-declaring, and
26
+ ``tests/python/test_agent_provenance.py`` fails CI on any agent that is
27
+ none of the three.
28
+ """
29
+
30
+ from __future__ import annotations
31
+
32
+ from pathlib import Path
33
+
34
+ import yaml
35
+
36
+ from core.provenance import (
37
+ FIRST_PARTY,
38
+ Provenance,
39
+ ProvenanceError,
40
+ provenance_from_block,
41
+ )
42
+
43
+ __all__ = [
44
+ "FIRST_PARTY",
45
+ "Provenance",
46
+ "ProvenanceError",
47
+ "agent_provenance",
48
+ "declares_provenance",
49
+ "provenance_from_yaml",
50
+ "provenance_issues_from_yaml",
51
+ ]
52
+
53
+
54
+ def _provenance_block(data: dict) -> dict | None:
55
+ """The ``provenance`` mapping from a loaded agent YAML.
56
+
57
+ Present-but-not-a-mapping is an error, never a silent first-party
58
+ fallback — the same fail-closed rule the skill parser uses.
59
+ """
60
+ if "provenance" not in data:
61
+ return None
62
+ block = data["provenance"]
63
+ if not isinstance(block, dict):
64
+ raise ProvenanceError(
65
+ "provenance must be a mapping of origin/source/license"
66
+ )
67
+ return block
68
+
69
+
70
+ def provenance_from_yaml(data: dict) -> Provenance:
71
+ """Parse the provenance of a loaded agent YAML mapping.
72
+
73
+ Raises ``ProvenanceError``/``ValidationError`` when the block is
74
+ present but incoherent.
75
+ """
76
+ if not isinstance(data, dict):
77
+ raise ProvenanceError("agent YAML is not a mapping")
78
+ return provenance_from_block(_provenance_block(data))
79
+
80
+
81
+ def declares_provenance(data: dict) -> bool:
82
+ """Did the author WRITE a provenance block? (vs the first-party
83
+ default). The classification control needs this distinction, which
84
+ ``provenance_from_yaml`` collapses."""
85
+ if not isinstance(data, dict):
86
+ return False
87
+ try:
88
+ return _provenance_block(data) is not None
89
+ except ProvenanceError:
90
+ return True # broken but attempted
91
+
92
+
93
+ def _load_yaml(path: Path) -> dict:
94
+ try:
95
+ data = yaml.safe_load(path.read_text(encoding="utf-8"))
96
+ except (OSError, yaml.YAMLError) as exc:
97
+ raise ProvenanceError(f"{path}: cannot read agent YAML — {exc}") from exc
98
+ return data if isinstance(data, dict) else {}
99
+
100
+
101
+ def agent_provenance(path: str | Path) -> Provenance:
102
+ """Provenance of an agent YAML file. Raises on an incoherent block."""
103
+ return provenance_from_yaml(_load_yaml(Path(path)))
104
+
105
+
106
+ def provenance_issues_from_yaml(data: dict) -> list[str]:
107
+ """Non-raising validation of a loaded agent YAML. Empty = clean."""
108
+ from pydantic import ValidationError
109
+ try:
110
+ provenance_from_yaml(data)
111
+ except ProvenanceError as exc:
112
+ return [str(exc)]
113
+ except ValidationError as exc:
114
+ return [
115
+ err["msg"].removeprefix("Value error, ") for err in exc.errors()
116
+ ]
117
+ return []