ai-capability-framework 1.0.0-rc.3 → 1.0.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.
Files changed (217) hide show
  1. package/CHANGELOG.md +97 -103
  2. package/CODE_OF_CONDUCT.md +11 -13
  3. package/CONTRIBUTING.md +40 -43
  4. package/GOVERNANCE.md +34 -35
  5. package/README.md +99 -63
  6. package/ROADMAP.md +12 -12
  7. package/SECURITY.md +15 -15
  8. package/dist/audit/ledger.d.ts.map +1 -1
  9. package/dist/audit/ledger.js +2 -1
  10. package/dist/audit/records.d.ts.map +1 -1
  11. package/dist/audit/records.js +2 -1
  12. package/dist/audit/types.d.ts +4 -1
  13. package/dist/audit/types.d.ts.map +1 -1
  14. package/dist/aws/dynamodb-stores.d.ts +2 -7
  15. package/dist/aws/dynamodb-stores.d.ts.map +1 -1
  16. package/dist/aws/dynamodb-stores.js +56 -5
  17. package/dist/aws/testing.d.ts.map +1 -1
  18. package/dist/aws/testing.js +9 -0
  19. package/dist/cli.d.ts +6 -6
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +77 -7
  22. package/dist/evals-live/index.d.ts +2 -2
  23. package/dist/evals-live/index.d.ts.map +1 -1
  24. package/dist/evals-live/index.js +1 -1
  25. package/dist/evals-live/live-eval-runner.d.ts +49 -1
  26. package/dist/evals-live/live-eval-runner.d.ts.map +1 -1
  27. package/dist/evals-live/live-eval-runner.js +246 -4
  28. package/dist/evals-live/types.d.ts +62 -9
  29. package/dist/evals-live/types.d.ts.map +1 -1
  30. package/dist/index.d.ts +0 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +0 -1
  33. package/dist/runtime/actions.d.ts +2 -0
  34. package/dist/runtime/actions.d.ts.map +1 -1
  35. package/dist/runtime/actions.js +200 -55
  36. package/dist/runtime/index.d.ts +1 -1
  37. package/dist/runtime/index.d.ts.map +1 -1
  38. package/dist/runtime/stores.d.ts +2 -7
  39. package/dist/runtime/stores.d.ts.map +1 -1
  40. package/dist/runtime/stores.js +12 -0
  41. package/dist/runtime/types.d.ts +25 -6
  42. package/dist/runtime/types.d.ts.map +1 -1
  43. package/docs/action-lifecycle.md +38 -32
  44. package/docs/adapter-roadmap.md +51 -49
  45. package/docs/adapters.md +14 -15
  46. package/docs/ai-sdk-runtime.md +36 -39
  47. package/docs/anthropic-runtime.md +29 -32
  48. package/docs/api/public-api-policy.md +59 -0
  49. package/docs/api.md +354 -371
  50. package/docs/architecture/current-state.md +28 -31
  51. package/docs/audit/index.md +29 -29
  52. package/docs/aws/cloudwatch-telemetry.md +5 -7
  53. package/docs/aws/dynamodb-single-table.md +8 -9
  54. package/docs/aws/kms-redaction.md +5 -6
  55. package/docs/aws/overview.md +5 -5
  56. package/docs/aws/production-reference.md +13 -14
  57. package/docs/aws/step-functions-approval.md +7 -9
  58. package/docs/aws-runtime.md +24 -25
  59. package/docs/capability-manifests.md +17 -21
  60. package/docs/control-plane/overview.md +2 -2
  61. package/docs/control-plane.md +24 -27
  62. package/docs/controls/index.md +19 -22
  63. package/docs/core/capability-manifests.md +4 -5
  64. package/docs/core/entity-manifests.md +5 -5
  65. package/docs/eval-runner.md +29 -31
  66. package/docs/evalops.md +13 -14
  67. package/docs/evals/golden-tests.md +4 -5
  68. package/docs/evals/overview.md +3 -3
  69. package/docs/evals/replay-and-trace-to-golden.md +19 -20
  70. package/docs/evals.md +19 -20
  71. package/docs/evidence.md +22 -23
  72. package/docs/gemini-runtime.md +31 -33
  73. package/docs/getting-started/anthropic-quickstart.md +61 -0
  74. package/docs/getting-started/concepts.md +9 -10
  75. package/docs/getting-started/gemini-quickstart.md +62 -0
  76. package/docs/getting-started/installation.md +3 -3
  77. package/docs/getting-started/openai-quickstart.md +61 -0
  78. package/docs/getting-started/provider-neutral-quickstart.md +106 -0
  79. package/docs/getting-started/quickstart.md +2 -2
  80. package/docs/getting-started.md +23 -20
  81. package/docs/glossary.md +31 -48
  82. package/docs/governance/gate.md +28 -30
  83. package/docs/governance/impact-and-compatibility.md +2 -3
  84. package/docs/governance/index.md +53 -54
  85. package/docs/governance/lifecycle.md +4 -5
  86. package/docs/governance/overview.md +2 -3
  87. package/docs/governance/risk-compiler.md +4 -5
  88. package/docs/host-responsibilities.md +6 -8
  89. package/docs/implementation-notes/baseline-gaps.md +15 -18
  90. package/docs/index.md +21 -6
  91. package/docs/interoperability.md +9 -9
  92. package/docs/langchain-runtime.md +27 -31
  93. package/docs/live-evals.md +68 -32
  94. package/docs/mcp-server-runtime.md +36 -40
  95. package/docs/memory.md +35 -36
  96. package/docs/migration-0.1-to-1.0.md +14 -9
  97. package/docs/observability/overview.md +2 -3
  98. package/docs/observability-runtime.md +35 -39
  99. package/docs/openai-responses.md +36 -37
  100. package/docs/openai-runtime.md +41 -46
  101. package/docs/openai-walkthrough.md +24 -28
  102. package/docs/policy-broker.md +9 -10
  103. package/docs/provenance.md +30 -29
  104. package/docs/providers/anthropic.md +5 -5
  105. package/docs/providers/choose-a-runtime.md +37 -0
  106. package/docs/providers/conformance.md +14 -15
  107. package/docs/providers/gemini.md +5 -5
  108. package/docs/providers/mcp.md +2 -3
  109. package/docs/providers/openai.md +2 -2
  110. package/docs/providers/semantic-kernel.md +2 -2
  111. package/docs/providers.md +43 -38
  112. package/docs/public/license-exceptions.md +187 -0
  113. package/docs/public/npm-release-preflight.md +112 -0
  114. package/docs/public-framework/compatibility-policy.md +12 -13
  115. package/docs/public-framework/deprecation-policy.md +8 -8
  116. package/docs/public-framework/final-certification-matrix.md +104 -0
  117. package/docs/public-framework/license-decision.md +20 -0
  118. package/docs/public-framework/release-process.md +46 -16
  119. package/docs/public-framework/security-disclosure.md +4 -5
  120. package/docs/public-framework/v1-certification.md +102 -15
  121. package/docs/release.md +200 -122
  122. package/docs/runtime/action-lifecycle.md +3 -3
  123. package/docs/runtime/policy-broker.md +4 -4
  124. package/docs/runtime/runtime-overview.md +4 -5
  125. package/docs/runtime/tool-result-envelope.md +7 -7
  126. package/docs/runtime.md +90 -93
  127. package/docs/security/overview.md +4 -4
  128. package/docs/security/security-packs.md +24 -26
  129. package/docs/security/trust-taint-redaction.md +42 -47
  130. package/docs/semantic-kernel-runtime.md +35 -37
  131. package/docs/spec.md +95 -101
  132. package/docs/start-here.md +18 -20
  133. package/examples/01-basic-read-capability/README.md +3 -4
  134. package/examples/02-prepare-approve-commit/README.md +6 -6
  135. package/examples/03-multi-provider-tools/README.md +2 -2
  136. package/examples/04-mcp-server/README.md +4 -5
  137. package/examples/05-langchain-langgraph-bridge/README.md +4 -5
  138. package/examples/06-vercel-ai-sdk-bridge/README.md +5 -7
  139. package/examples/07-policy-broker-custom-auth/README.md +4 -4
  140. package/examples/08-aws-step-functions-approval/README.md +4 -5
  141. package/examples/09-security-packs-promptfoo/README.md +4 -4
  142. package/examples/10-trace-to-golden/README.md +2 -2
  143. package/examples/11-control-plane/README.md +4 -5
  144. package/examples/aws/README.md +5 -8
  145. package/examples/control-plane/README.md +8 -9
  146. package/examples/control-plane/fixtures/control-plane.seed.json +8 -32
  147. package/examples/control-plane/public/app.js +57 -18
  148. package/examples/control-plane/public/index.html +15 -6
  149. package/examples/control-plane/server.mjs +15 -3
  150. package/examples/eval-results/public.results.passing.json +6 -21
  151. package/examples/providers/ai-sdk-next/README.md +11 -8
  152. package/examples/providers/anthropic-claude/README.md +5 -6
  153. package/examples/providers/gemini/README.md +6 -6
  154. package/examples/providers/langchain-agent/README.md +3 -4
  155. package/examples/providers/langgraph-tool-node/README.md +7 -7
  156. package/examples/providers/mcp/README.md +8 -8
  157. package/examples/providers/provider-conformance/README.md +3 -3
  158. package/examples/providers/semantic-kernel-mcp/README.md +6 -6
  159. package/examples/providers/semantic-kernel-openapi/README.md +6 -7
  160. package/examples/runtime-support-billing/README.md +8 -9
  161. package/examples/runtime-support-billing/support-billing-runtime.mjs +8 -4
  162. package/examples/scheduling/capabilities/scheduling.availability.get.yaml +2 -2
  163. package/examples/scheduling/capabilities/scheduling.invite.prepare.yaml +2 -2
  164. package/examples/scheduling/capabilities/scheduling.invite.send.yaml +2 -2
  165. package/examples/scheduling/entities/AvailabilitySlot.yaml +2 -2
  166. package/examples/scheduling/entities/MeetingInvite.yaml +2 -2
  167. package/examples/scheduling/evals/scheduling.invite.prepare.valid.yaml +3 -1
  168. package/examples/semantic-kernel-mcp/README.md +11 -12
  169. package/examples/semantic-kernel-openapi/README.md +8 -8
  170. package/examples/support/capabilities/support.refund.commit_case.yaml +3 -3
  171. package/examples/support/capabilities/support.refund.prepare_case.yaml +2 -2
  172. package/examples/support/capabilities/support.ticket.get.yaml +2 -2
  173. package/examples/support/entities/Ticket.yaml +0 -1
  174. package/examples/support/eval-results/support.results.passing.json +3 -12
  175. package/examples/support/evals/support.refund.prepare_case.approval_required.yaml +3 -1
  176. package/examples/support/evals/support.refund.prepare_case.valid.yaml +3 -2
  177. package/examples/support/memory/support.agent.preferences.json +2 -6
  178. package/examples/support/openai/context.support_agent.json +1 -4
  179. package/examples/support/provenance/support.refund.summary.provenance.json +2 -6
  180. package/examples/support/replay/support.refund.approval_required.trace.json +4 -14
  181. package/package.json +22 -5
  182. package/schemas/audit/action-record.schema.json +4 -1
  183. package/schemas/aws/approval-task.schema.json +8 -1
  184. package/schemas/conformance/conformance-case.schema.json +18 -2
  185. package/schemas/conformance/conformance-report.schema.json +17 -2
  186. package/schemas/conformance/provider-target-matrix.schema.json +35 -4
  187. package/schemas/controls/control-decision.schema.json +7 -1
  188. package/schemas/eval-case.schema.json +8 -1
  189. package/schemas/eval-result.schema.json +8 -1
  190. package/schemas/evidence/evidence-pack.schema.json +34 -5
  191. package/schemas/governance/compatibility-diff.schema.json +8 -1
  192. package/schemas/governance/lifecycle-transition.schema.json +10 -1
  193. package/schemas/governance/risk-compilation-result.schema.json +9 -1
  194. package/schemas/provenance/generated-content-provenance.schema.json +3 -1
  195. package/schemas/replay/replay-result.schema.json +16 -2
  196. package/schemas/replay/replay-trace.schema.json +11 -2
  197. package/schemas/security/context-segment.schema.json +21 -12
  198. package/schemas/security/redaction-policy.schema.json +4 -1
  199. package/schemas/security-packs/coverage-report.schema.json +17 -2
  200. package/schemas/security-packs/security-case-suite.schema.json +11 -1
  201. package/schemas/tool-result-envelope.schema.json +9 -1
  202. package/security-packs/approval_bypass.yaml +12 -2
  203. package/security-packs/capability_spoofing.yaml +17 -3
  204. package/security-packs/cost_amplification.yaml +21 -4
  205. package/security-packs/cross_tenant_access.yaml +16 -3
  206. package/security-packs/insecure_output_rendering.yaml +15 -4
  207. package/security-packs/mcp_tool_abuse.yaml +17 -3
  208. package/security-packs/memory_scope_violation.yaml +19 -4
  209. package/security-packs/prompt_injection_direct.yaml +19 -4
  210. package/security-packs/prompt_injection_indirect.yaml +18 -3
  211. package/security-packs/provider_payload_exposure.yaml +26 -4
  212. package/security-packs/retrieval_poisoning.yaml +5 -2
  213. package/security-packs/schema_confusion.yaml +17 -3
  214. package/security-packs/sensitive_data_disclosure.yaml +22 -5
  215. package/security-packs/tool_exfiltration.yaml +20 -4
  216. package/security-packs/tool_result_poisoning.yaml +19 -4
  217. package/security-packs/unsafe_commit_attempt.yaml +6 -3
package/docs/providers.md CHANGED
@@ -1,33 +1,34 @@
1
1
  # Provider Foundation
2
2
 
3
- AICF is a provider-agnostic AI capability framework. It turns application
4
- functions, data access, and workflows into typed, permissioned, versioned,
5
- observable, and evaluated capabilities that can be exposed to AI models and
6
- agent frameworks without making any provider schema the source of truth.
7
-
8
- OpenAI is one adapter, not the architecture. The canonical contract is still
9
- the AICF capability manifest plus runtime policy, lifecycle, and model-safe
10
- result envelopes.
11
-
12
- If you are new to provider adapters, read the
13
- [OpenAI walkthrough](openai-walkthrough.md) first. The same mental model applies
14
- to the other provider runtimes and framework bridges: export a routed slice,
15
- map provider calls back through bindings, validate with AICF, and keep commit
16
- host-controlled.
3
+ AICF is a provider-agnostic AI capability framework. It turns application functions,
4
+ data access, and workflows into typed, permissioned, versioned, observable, and
5
+ evaluated capabilities that can be exposed to AI models and agent frameworks without
6
+ making any provider schema the source of truth.
7
+
8
+ OpenAI is one adapter, not the architecture. The canonical contract is still the AICF
9
+ capability manifest plus runtime policy, lifecycle, and model-safe result envelopes.
10
+
11
+ If you are new to provider adapters, start with the
12
+ [provider-neutral quickstart](getting-started/provider-neutral-quickstart.md) and then
13
+ use [Choose a Runtime](providers/choose-a-runtime.md). The same mental model applies to
14
+ every provider runtime and framework bridge: export a routed slice, map provider calls
15
+ back through bindings, validate with AICF, and keep commit host-controlled. The
16
+ [OpenAI walkthrough](openai-walkthrough.md) remains a concrete example, not the default
17
+ architecture.
17
18
 
18
19
  ## Provider Types
19
20
 
20
- - Direct model runtimes: OpenAI Responses, Anthropic Claude Messages, and Google
21
- Gemini GenerateContent.
21
+ - Direct model runtimes: OpenAI Responses, Anthropic Claude Messages, and Google Gemini
22
+ GenerateContent.
22
23
  - Framework bridges: Vercel AI SDK and LangChain/LangGraph.
23
24
  - Interoperability surfaces: MCP descriptors/server runtime and Semantic
24
25
  Kernel-compatible MCP/OpenAPI metadata.
25
- - Descriptor-only conformance: the provider conformance matrix verifies that a
26
- routed slice maps consistently across supported targets.
26
+ - Descriptor-only conformance: the provider conformance matrix verifies that a routed
27
+ slice maps consistently across supported targets.
27
28
 
28
- Provider modules are optional subpath imports. Root, runtime, and shared
29
- provider imports must work without Anthropic, Google, AI SDK, LangChain, MCP SDK,
30
- Semantic Kernel, OpenAI, AWS, or observability SDK packages installed.
29
+ Provider modules are optional subpath imports. Root, runtime, and shared provider
30
+ imports must work without Anthropic, Google, AI SDK, LangChain, MCP SDK, Semantic
31
+ Kernel, OpenAI, AWS, or observability SDK packages installed.
31
32
 
32
33
  ```ts
33
34
  import { createProviderToolNameMap } from "ai-capability-framework/providers";
@@ -41,15 +42,14 @@ import { exportSemanticKernelOpenApiPlugin } from "ai-capability-framework/provi
41
42
 
42
43
  ## Shared Behavior
43
44
 
44
- The shared provider layer provides deterministic provider-safe tool names,
45
- collision diagnostics, reverse lookup through binding maps, schema
46
- normalization, canonical provider call/result summaries, optional dependency
47
- loading, and an execution helper that delegates read and prepare calls to
48
- `AicfToolExecutor`.
45
+ The shared provider layer provides deterministic provider-safe tool names, collision
46
+ diagnostics, reverse lookup through binding maps, schema normalization, canonical
47
+ provider call/result summaries, optional dependency loading, and an execution helper
48
+ that delegates read and prepare calls to `AicfToolExecutor`.
49
49
 
50
- Provider SDK validation does not replace AICF validation. Provider descriptors
51
- are generated from routed AICF capability slices, then all tool calls map back
52
- through bindings to the original capability ID and input schema.
50
+ Provider SDK validation does not replace AICF validation. Provider descriptors are
51
+ generated from routed AICF capability slices, then all tool calls map back through
52
+ bindings to the original capability ID and input schema.
53
53
 
54
54
  ## Safety Boundary
55
55
 
@@ -58,19 +58,24 @@ AICF remains the policy and action authority:
58
58
  - commit capabilities are not exported to models by default;
59
59
  - read and prepare calls execute through AICF validation, policy, lifecycle, and
60
60
  model-safe envelopes;
61
- - optional AICF controls can deny provider export, apply read-only mode, and
62
- enforce provider-loop budgets;
63
- - commit remains host-controlled through `AicfActionLifecycleManager` after a
64
- stored prepared action, approval, idempotency, and audit checks;
61
+ - optional AICF controls can deny provider export, apply read-only mode, and enforce
62
+ provider-loop budgets;
63
+ - commit remains host-controlled through `AicfActionLifecycleManager` after a stored
64
+ prepared action, approval, idempotency, and audit checks;
65
65
  - raw prompts, raw user messages, provider request/response payloads, traces,
66
66
  credentials, and private diagnostics are not logged by default;
67
67
  - ambiguous provider/runtime behavior fails closed.
68
68
 
69
- Live tests are opt-in. Normal package checks use mock clients, fake SDK
70
- factories, descriptor exports, and synthetic fixtures.
69
+ Live tests are opt-in. Normal package checks use mock clients, fake SDK factories,
70
+ descriptor exports, and synthetic fixtures.
71
71
 
72
72
  ## Guides And Examples
73
73
 
74
+ - [Choose a runtime](providers/choose-a-runtime.md)
75
+ - [Provider-neutral quickstart](getting-started/provider-neutral-quickstart.md)
76
+ - [OpenAI quickstart](getting-started/openai-quickstart.md)
77
+ - [Anthropic quickstart](getting-started/anthropic-quickstart.md)
78
+ - [Gemini quickstart](getting-started/gemini-quickstart.md)
74
79
  - [OpenAI Responses runtime](openai-runtime.md)
75
80
  - [Anthropic Claude runtime](anthropic-runtime.md)
76
81
  - [Google Gemini runtime](gemini-runtime.md)
@@ -80,9 +85,9 @@ factories, descriptor exports, and synthetic fixtures.
80
85
  - [Semantic Kernel compatibility](semantic-kernel-runtime.md)
81
86
  - [Provider conformance](providers/conformance.md)
82
87
 
83
- Grouped public examples live under `examples/providers/`. They are README-only
84
- by design: no credentials, raw provider payloads, live transcripts, or local
85
- runtime state are included.
88
+ Grouped public examples live under `examples/providers/`. They are README-only by
89
+ design: no credentials, raw provider payloads, live transcripts, or local runtime state
90
+ are included.
86
91
 
87
92
  ## Release Checks
88
93
 
@@ -0,0 +1,187 @@
1
+ # Dependency License Exceptions
2
+
3
+ AICF uses MIT for the public framework and accepts common permissive dependency licenses
4
+ by default. The release gate blocks unknown, copyleft, source-available, and unlicensed
5
+ dependency metadata unless maintainers document an explicit exception here.
6
+
7
+ The default allow-list is:
8
+
9
+ - MIT
10
+ - Apache-2.0
11
+ - BSD-2-Clause
12
+ - BSD-3-Clause
13
+ - ISC
14
+ - CC0-1.0
15
+ - Unlicense
16
+ - BlueOak-1.0.0
17
+
18
+ Disallowed-by-default license families include GPL, AGPL, LGPL, SSPL, BUSL, unknown
19
+ licenses, and `UNLICENSED`.
20
+
21
+ The `npm run check:licenses` gate reads the package lockfiles and the JSON block below.
22
+ Exceptions must be exact by package, version, license, and package scope. Stale or
23
+ malformed exception records fail the gate.
24
+
25
+ ```json
26
+ {
27
+ "exceptions": [
28
+ {
29
+ "package": "argparse",
30
+ "version": "2.0.1",
31
+ "license": "Python-2.0",
32
+ "scope": "root",
33
+ "reason": "Transitive build and validation dependency; license reviewed as compatible for public package use.",
34
+ "approved_by": "AICF maintainers",
35
+ "approved_at": "2026-06-08",
36
+ "review_by": "2027-06-08",
37
+ "constraints": "Do not copy package source into AICF docs or examples."
38
+ },
39
+ {
40
+ "package": "lightningcss",
41
+ "version": "1.32.0",
42
+ "license": "MPL-2.0",
43
+ "scope": "root",
44
+ "reason": "Transitive TypeDoc build dependency; weak-copyleft terms are isolated to the dependency package.",
45
+ "approved_by": "AICF maintainers",
46
+ "approved_at": "2026-06-08",
47
+ "review_by": "2027-06-08",
48
+ "constraints": "Do not vendor or modify dependency source in this repository."
49
+ },
50
+ {
51
+ "package": "lightningcss-android-arm64",
52
+ "version": "1.32.0",
53
+ "license": "MPL-2.0",
54
+ "scope": "root",
55
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
56
+ "approved_by": "AICF maintainers",
57
+ "approved_at": "2026-06-08",
58
+ "review_by": "2027-06-08",
59
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
60
+ },
61
+ {
62
+ "package": "lightningcss-darwin-arm64",
63
+ "version": "1.32.0",
64
+ "license": "MPL-2.0",
65
+ "scope": "root",
66
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
67
+ "approved_by": "AICF maintainers",
68
+ "approved_at": "2026-06-08",
69
+ "review_by": "2027-06-08",
70
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
71
+ },
72
+ {
73
+ "package": "lightningcss-darwin-x64",
74
+ "version": "1.32.0",
75
+ "license": "MPL-2.0",
76
+ "scope": "root",
77
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
78
+ "approved_by": "AICF maintainers",
79
+ "approved_at": "2026-06-08",
80
+ "review_by": "2027-06-08",
81
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
82
+ },
83
+ {
84
+ "package": "lightningcss-freebsd-x64",
85
+ "version": "1.32.0",
86
+ "license": "MPL-2.0",
87
+ "scope": "root",
88
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
89
+ "approved_by": "AICF maintainers",
90
+ "approved_at": "2026-06-08",
91
+ "review_by": "2027-06-08",
92
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
93
+ },
94
+ {
95
+ "package": "lightningcss-linux-arm-gnueabihf",
96
+ "version": "1.32.0",
97
+ "license": "MPL-2.0",
98
+ "scope": "root",
99
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
100
+ "approved_by": "AICF maintainers",
101
+ "approved_at": "2026-06-08",
102
+ "review_by": "2027-06-08",
103
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
104
+ },
105
+ {
106
+ "package": "lightningcss-linux-arm64-gnu",
107
+ "version": "1.32.0",
108
+ "license": "MPL-2.0",
109
+ "scope": "root",
110
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
111
+ "approved_by": "AICF maintainers",
112
+ "approved_at": "2026-06-08",
113
+ "review_by": "2027-06-08",
114
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
115
+ },
116
+ {
117
+ "package": "lightningcss-linux-arm64-musl",
118
+ "version": "1.32.0",
119
+ "license": "MPL-2.0",
120
+ "scope": "root",
121
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
122
+ "approved_by": "AICF maintainers",
123
+ "approved_at": "2026-06-08",
124
+ "review_by": "2027-06-08",
125
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
126
+ },
127
+ {
128
+ "package": "lightningcss-linux-x64-gnu",
129
+ "version": "1.32.0",
130
+ "license": "MPL-2.0",
131
+ "scope": "root",
132
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
133
+ "approved_by": "AICF maintainers",
134
+ "approved_at": "2026-06-08",
135
+ "review_by": "2027-06-08",
136
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
137
+ },
138
+ {
139
+ "package": "lightningcss-linux-x64-musl",
140
+ "version": "1.32.0",
141
+ "license": "MPL-2.0",
142
+ "scope": "root",
143
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
144
+ "approved_by": "AICF maintainers",
145
+ "approved_at": "2026-06-08",
146
+ "review_by": "2027-06-08",
147
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
148
+ },
149
+ {
150
+ "package": "lightningcss-win32-arm64-msvc",
151
+ "version": "1.32.0",
152
+ "license": "MPL-2.0",
153
+ "scope": "root",
154
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
155
+ "approved_by": "AICF maintainers",
156
+ "approved_at": "2026-06-08",
157
+ "review_by": "2027-06-08",
158
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
159
+ },
160
+ {
161
+ "package": "lightningcss-win32-x64-msvc",
162
+ "version": "1.32.0",
163
+ "license": "MPL-2.0",
164
+ "scope": "root",
165
+ "reason": "Optional platform package for the reviewed lightningcss dependency.",
166
+ "approved_by": "AICF maintainers",
167
+ "approved_at": "2026-06-08",
168
+ "review_by": "2027-06-08",
169
+ "constraints": "Keep usage limited to dependency installation; do not vendor source."
170
+ },
171
+ {
172
+ "package": "tslib",
173
+ "version": "2.8.1",
174
+ "license": "0BSD",
175
+ "scope": "root",
176
+ "reason": "Transitive TypeScript helper dependency; 0BSD is public-domain-like and compatible with MIT distribution.",
177
+ "approved_by": "AICF maintainers",
178
+ "approved_at": "2026-06-08",
179
+ "review_by": "2027-06-08",
180
+ "constraints": "Review again if the dependency is vendored or materially modified."
181
+ }
182
+ ]
183
+ }
184
+ ```
185
+
186
+ Host applications and downstream distributors remain responsible for their own legal
187
+ review.
@@ -0,0 +1,112 @@
1
+ # npm Release Preflight
2
+
3
+ Run this preflight before pushing a release tag. It checks the public npm package
4
+ boundary and makes the release operator verify ownership and publishing setup.
5
+
6
+ ## Packages
7
+
8
+ | Package | Expected scope | Access | Release policy |
9
+ | ------------------------- | ----------------------- | ------ | ------------------------------------------------------------------------- |
10
+ | `ai-capability-framework` | unscoped public package | public | Published from the release tag after final certification. |
11
+ | `@aicf/agent-skills` | `@aicf` npm scope | public | Published from the same release tag and version, before the root package. |
12
+
13
+ Both packages must use the same version. Release tags must match that version exactly:
14
+ package version `1.0.0` uses tag `v1.0.0`.
15
+
16
+ ## Ownership
17
+
18
+ AICF maintainers own release approval. Before tagging, the release operator must verify
19
+ npm ownership directly:
20
+
21
+ ```bash
22
+ npm whoami
23
+ npm owner ls ai-capability-framework
24
+ npm owner ls @aicf/agent-skills
25
+ ```
26
+
27
+ For the first `@aicf/agent-skills` release, the `@aicf` npm scope and package-level
28
+ trusted publishing setup must exist before the tag is pushed.
29
+
30
+ ## Dist Tags
31
+
32
+ - Prerelease versions with a hyphen, such as `1.0.0-rc.6`, publish with `next`.
33
+ - Stable versions, such as `1.0.0`, publish with `latest`.
34
+ - Do not move `latest` to a prerelease intentionally. If a prerelease lands on `latest`,
35
+ fix the dist tags before announcing the release.
36
+
37
+ ## Trusted Publishing
38
+
39
+ GitHub Actions publishing must use npm Trusted Publishing with OIDC. Do not commit npm
40
+ tokens, one-time passwords, local `.npmrc` auth lines, or long-lived release
41
+ credentials. The publish workflow must keep `id-token: write` and publish only from `v*`
42
+ tags that point at `origin/main`.
43
+
44
+ AICF uses npm Trusted Publishing / GitHub OIDC for both public packages:
45
+
46
+ - `ai-capability-framework`
47
+ - `@aicf/agent-skills`
48
+
49
+ ## Preflight Commands
50
+
51
+ See [Final Certification Matrix](../public-framework/final-certification-matrix.md) for
52
+ the complete local command and workflow gate.
53
+
54
+ Run the final matrix and local metadata/registry preflight:
55
+
56
+ ```bash
57
+ npm run check:final-matrix
58
+ ```
59
+
60
+ ```bash
61
+ npm run check:release-tag
62
+ ```
63
+
64
+ ```bash
65
+ npm run release:preflight:npm
66
+ ```
67
+
68
+ For final manual release review, use strict mode:
69
+
70
+ ```bash
71
+ node scripts/check-npm-release-preflight.mjs --strict
72
+ ```
73
+
74
+ The default command verifies package metadata, target dist tag, package availability,
75
+ and whether the target local versions are already published. It warns when npm login or
76
+ owner checks cannot be completed. Strict mode fails on missing npm auth, missing owner
77
+ verification, or missing scoped package setup.
78
+
79
+ Run both package publish dry-runs with the computed dist tag:
80
+
81
+ ```bash
82
+ npm run release:publish:dry
83
+ ```
84
+
85
+ This command does not publish. It runs root and `@aicf/agent-skills` dry-runs with
86
+ `--access public`.
87
+
88
+ ## Version Availability
89
+
90
+ Before tagging, verify the target versions are unpublished:
91
+
92
+ ```bash
93
+ VERSION=$(node -p "require('./package.json').version")
94
+ npm view "ai-capability-framework@${VERSION}" version
95
+ npm view "@aicf/agent-skills@${VERSION}" version
96
+ ```
97
+
98
+ If either command returns a version, bump both package versions and refresh lockfiles
99
+ before tagging. npm versions are immutable.
100
+
101
+ ## Rollback And Deprecation
102
+
103
+ Do not delete a published version as a normal rollback strategy. If a release is bad,
104
+ publish a fixed version and, when appropriate, deprecate the bad version with a concise
105
+ public-safe reason:
106
+
107
+ ```bash
108
+ npm deprecate ai-capability-framework@<version> "Use <fixed-version>."
109
+ npm deprecate @aicf/agent-skills@<version> "Use <fixed-version>."
110
+ ```
111
+
112
+ For dist-tag mistakes, move the tag to the intended version with `npm dist-tag add`.
@@ -1,20 +1,19 @@
1
1
  # Compatibility Policy
2
2
 
3
- AICF treats exported TypeScript APIs, schemas, CLI commands, public examples,
4
- and documented subpath imports as public compatibility surfaces.
3
+ AICF treats exported TypeScript APIs, schemas, CLI commands, public examples, and
4
+ documented subpath imports as public compatibility surfaces.
5
5
 
6
- Breaking changes include manifest schema breaking changes, required input
7
- changes, removed exports, public error-code removals or meaning changes,
8
- lifecycle/risk semantic changes, weakened runtime safety behavior, provider
9
- descriptor changes that alter generated tools, eval-result schema changes,
10
- control-plane API changes, model-exposed commit paths, or package boundary
11
- changes that require optional SDKs from root imports.
6
+ Breaking changes include manifest schema breaking changes, required input changes,
7
+ removed exports, public error-code removals or meaning changes, lifecycle/risk semantic
8
+ changes, weakened runtime safety behavior, provider descriptor changes that alter
9
+ generated tools, eval-result schema changes, control-plane API changes, model-exposed
10
+ commit paths, or package boundary changes that require optional SDKs from root imports.
12
11
 
13
- Minor changes include new optional manifest fields, new isolated subpaths, new
14
- provider adapters, new eval scorers, new warnings that do not fail by default,
15
- new docs, and new examples.
12
+ Minor changes include new optional manifest fields, new isolated subpaths, new provider
13
+ adapters, new eval scorers, new warnings that do not fail by default, new docs, and new
14
+ examples.
16
15
 
17
- Patch changes include bug fixes, docs corrections, internal refactors, and
18
- provider compatibility fixes that do not alter public contracts.
16
+ Patch changes include bug fixes, docs corrections, internal refactors, and provider
17
+ compatibility fixes that do not alter public contracts.
19
18
 
20
19
  When in doubt, add compatibility tests and document migration guidance.
@@ -1,12 +1,12 @@
1
1
  # Deprecation Policy
2
2
 
3
- Deprecated capabilities, APIs, docs, or commands should remain available long
4
- enough for public users to migrate.
3
+ Deprecated capabilities, APIs, docs, or commands should remain available long enough for
4
+ public users to migrate.
5
5
 
6
- Deprecated public APIs and manifest fields should warn or remain documented for
7
- at least one minor release before removal unless a security issue requires
8
- immediate denial. Deprecated manifest fields must remain loadable until the next
9
- major version when practical.
6
+ Deprecated public APIs and manifest fields should warn or remain documented for at least
7
+ one minor release before removal unless a security issue requires immediate denial.
8
+ Deprecated manifest fields must remain loadable until the next major version when
9
+ practical.
10
10
 
11
11
  Deprecation guidance should include:
12
12
 
@@ -16,5 +16,5 @@ Deprecation guidance should include:
16
16
  - migration notes;
17
17
  - tests that preserve compatibility until removal.
18
18
 
19
- Safety fixes may deny unsafe behavior immediately, but should still provide
20
- actionable diagnostics.
19
+ Safety fixes may deny unsafe behavior immediately, but should still provide actionable
20
+ diagnostics.
@@ -0,0 +1,104 @@
1
+ # Final Certification Matrix
2
+
3
+ The final certification matrix is the local release-review gate for AICF v1 readiness.
4
+ It is not a legal certification, audit opinion, security guarantee, or npm publish
5
+ action. It checks that the public repository, root package, `@aicf/agent-skills`,
6
+ workflows, docs, package contents, and release dry-run commands line up.
7
+
8
+ Run the matrix directly with:
9
+
10
+ ```bash
11
+ npm run check:final-matrix
12
+ ```
13
+
14
+ It is also part of:
15
+
16
+ ```bash
17
+ npm run check:certification
18
+ ```
19
+
20
+ ## Required Local Commands
21
+
22
+ Before a release tag, these non-live commands must pass from the repository root:
23
+
24
+ ```bash
25
+ npm ci
26
+ npm run format:check
27
+ npm run build
28
+ npm run typecheck
29
+ npm test
30
+ npm run validate
31
+ npm run conformance
32
+ npm run check:package
33
+ npm run check:package-public
34
+ npm run check:workspace-public
35
+ npm run check:release-install
36
+ npm run check:metadata
37
+ npm run check:licenses
38
+ npm run check:final-matrix
39
+ npm run check:release-tag
40
+ npm run skills:check
41
+ npm run check:certification
42
+ ```
43
+
44
+ Agent skills must also pass their package-local checks:
45
+
46
+ ```bash
47
+ npm --prefix agent-skills ci
48
+ npm --prefix agent-skills run validate
49
+ npm --prefix agent-skills run test
50
+ npm --prefix agent-skills run pack:dry
51
+ npm --prefix agent-skills run check
52
+ ```
53
+
54
+ ## Required Workflows
55
+
56
+ The matrix asserts these workflows exist and contain the expected gates:
57
+
58
+ - CI with Node 20.x, 22.x, and 24.x.
59
+ - Validate.
60
+ - Security with audit, license, secret, package public, and workspace public checks.
61
+ - Docs.
62
+ - Release Dry Run.
63
+ - Publish.
64
+ - Agent skills checks through CI and final certification.
65
+
66
+ ## Package Artifact Rules
67
+
68
+ Root and agent-skills package dry-runs must not include `.git/`, `node_modules/`,
69
+ `_private/`, `.aicf/`, raw prompts, raw traces, raw provider payloads, logs, local
70
+ backups, generated docs, source archives, package archives, coverage output, or
71
+ unreviewed scratch files.
72
+
73
+ Create source review archives with the release script:
74
+
75
+ ```bash
76
+ npm run archive:source
77
+ npm run check:source-archive
78
+ ```
79
+
80
+ Do not zip the working directory manually.
81
+
82
+ ## Publish Dry-Run Review
83
+
84
+ The publish dry-run command computes the npm dist tag from the package version and runs
85
+ both package dry-runs with public access:
86
+
87
+ ```bash
88
+ npm run release:publish:dry
89
+ ```
90
+
91
+ Prereleases such as `1.0.0-rc.6` use `next`. Stable releases use `latest`. This command
92
+ does not publish.
93
+
94
+ ## Manual Acceptance
95
+
96
+ Before stable v1, maintainers should also review README positioning, MIT license
97
+ consistency, provider-neutral onboarding, at least one non-OpenAI quickstart, agent
98
+ skills install docs, npm ownership, trusted publishing, source archive contents, opt-in
99
+ live test boundaries, and root import optional-dependency isolation.
100
+
101
+ - GitHub repository About/description says AICF is a provider-agnostic governed AI
102
+ capability framework.
103
+ - GitHub topics include at least: ai, agents, tool-calling, evals, governance,
104
+ model-context-protocol, langchain, gemini, anthropic, openai, typescript.
@@ -0,0 +1,20 @@
1
+ # License Decision
2
+
3
+ AICF uses the MIT license for the v1 public release.
4
+
5
+ This is an intentional project decision. The root framework package,
6
+ `@aicf/agent-skills`, the Codex plugin metadata, tracked skill frontmatter, README text,
7
+ package metadata, and release checks must all agree on MIT unless maintainers make an
8
+ explicit future license change.
9
+
10
+ MIT keeps the framework easy to adopt, fork, inspect, and embed in application stacks.
11
+ AICF still expects host applications to own their own legal review, security review,
12
+ compliance obligations, provider terms, and production risk decisions.
13
+
14
+ The release certification gate includes `npm run check:metadata` to confirm the license
15
+ and public identity are consistent before a v1 tag is published.
16
+
17
+ Dependency licenses are checked separately with `npm run check:licenses`. That gate uses
18
+ the root and `agent-skills` lockfiles, allows common permissive licenses by default, and
19
+ requires explicit public review records for any exception in
20
+ [Dependency License Exceptions](../public/license-exceptions.md).