knosky 0.6.3 → 0.7.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/CHANGELOG.md +149 -93
- package/CREDITS.md +14 -14
- package/LICENSE.md +76 -76
- package/LIMITATIONS.md +33 -23
- package/PRIVACY.md +30 -30
- package/README.md +170 -117
- package/SECURITY.md +78 -46
- package/action/post-comment.mjs +94 -89
- package/action.yml +62 -62
- package/bin/knosky.mjs +279 -105
- package/core/CONTRACT.md +70 -70
- package/core/append-only-checkpoint.mjs +215 -0
- package/core/audit-writer.mjs +317 -0
- package/core/benchmark-results.mjs +225 -225
- package/core/bundle.mjs +178 -178
- package/core/churn.mjs +23 -23
- package/core/ci.mjs +268 -268
- package/core/comparison.mjs +189 -189
- package/core/config.mjs +189 -189
- package/core/constants.mjs +13 -13
- package/core/contract.mjs +123 -123
- package/core/cross-repo.mjs +111 -111
- package/core/decision-codes.mjs +92 -0
- package/core/destination.mjs +161 -161
- package/core/district-classification.mjs +111 -0
- package/core/doctor-scorecard.mjs +369 -0
- package/core/domain-store.mjs +347 -0
- package/core/edges.mjs +43 -43
- package/core/escalate.mjs +68 -68
- package/core/freshness.mjs +198 -194
- package/core/fs-indexer.mjs +218 -218
- package/core/key-store.mjs +348 -348
- package/core/layout.mjs +46 -46
- package/core/ledger.mjs +176 -141
- package/core/local-ipc-identity.mjs +500 -0
- package/core/lod.mjs +155 -155
- package/core/mode-b.mjs +410 -0
- package/core/multi-model-benchmark.mjs +405 -405
- package/core/net-lockdown.mjs +421 -0
- package/core/onboarding.mjs +223 -223
- package/core/operator-auth.mjs +317 -0
- package/core/overlays.mjs +45 -45
- package/core/policy-lattice.mjs +142 -0
- package/core/pr-comment.mjs +198 -198
- package/core/protocol-spec.mjs +460 -460
- package/core/provenance.mjs +320 -0
- package/core/retrieve.mjs +63 -63
- package/core/route.mjs +304 -304
- package/core/schema.mjs +275 -275
- package/core/signing-tiers.mjs +1265 -0
- package/core/swarm-bench.mjs +106 -0
- package/core/swarm-coordinator.mjs +867 -0
- package/core/trust-root-rekey.mjs +410 -0
- package/mcp/server.mjs +264 -108
- package/package.json +56 -46
- package/renderer/art/kenney/buildingTiles_sheet.xml +130 -130
- package/renderer/art/kenney/cityDetails_sheet.xml +12 -12
- package/renderer/art/kenney/landscapeTiles_sheet.xml +129 -129
- package/renderer/art/kenney/sheet_allCars.xml +545 -545
- package/renderer/build-rich.mjs +43 -43
- package/renderer/city.template.html +808 -808
- package/ssot/decision-codes.json +133 -0
- package/ssot/ladder-l0-l3.md +232 -0
- package/ssot/tool-menu.json +130 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema_comment": "KnoSky DEC-108 / R3-D closed decision-code freeze. Identical list on protocol page, README, wiki, fixtures.",
|
|
3
|
+
"id": "knosky-decision-codes",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"status": "draft-freeze",
|
|
6
|
+
"dec": ["DEC-108", "DEC-106"],
|
|
7
|
+
"last_updated": "2026-07-19",
|
|
8
|
+
"lattice_note": "policy-lattice.mjs uses DENY > ALLOW > NOT_APPLICABLE for rule combine. Protocol decision_code on the wire extends that with reason-specific DENY_* and Mode A label.",
|
|
9
|
+
"codes": [
|
|
10
|
+
{
|
|
11
|
+
"code": "ALLOW",
|
|
12
|
+
"http_analogy": 200,
|
|
13
|
+
"mode": "B",
|
|
14
|
+
"authorizing": true,
|
|
15
|
+
"metadata_disclosed": true,
|
|
16
|
+
"meaning": "Route/list/bundle returned under policy; audit receipt present.",
|
|
17
|
+
"client_hint": "Proceed using pointers; still open live files for truth."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"code": "DENY",
|
|
21
|
+
"http_analogy": 403,
|
|
22
|
+
"mode": "B",
|
|
23
|
+
"authorizing": false,
|
|
24
|
+
"metadata_disclosed": false,
|
|
25
|
+
"meaning": "No route; generic policy or authorization denial without subclass.",
|
|
26
|
+
"client_hint": "No authorized path; do not probe for hidden structure."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"code": "DENY_IDENTITY",
|
|
30
|
+
"http_analogy": 401,
|
|
31
|
+
"mode": "B",
|
|
32
|
+
"authorizing": false,
|
|
33
|
+
"metadata_disclosed": false,
|
|
34
|
+
"meaning": "Missing, unknown, expired/revoked lease, or spoofed agent identity.",
|
|
35
|
+
"client_hint": "Register/bind agent + valid lease before governed calls."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"code": "DENY_POLICY",
|
|
39
|
+
"http_analogy": 403,
|
|
40
|
+
"mode": "B",
|
|
41
|
+
"authorizing": false,
|
|
42
|
+
"metadata_disclosed": false,
|
|
43
|
+
"meaning": "Policy missing, invalid, unsigned when required, or explicit policy DENY.",
|
|
44
|
+
"client_hint": "Fix domain policy/governance; re-run kc_policy_check."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"code": "DENY_AUDIT",
|
|
48
|
+
"http_analogy": 503,
|
|
49
|
+
"mode": "B",
|
|
50
|
+
"authorizing": false,
|
|
51
|
+
"metadata_disclosed": false,
|
|
52
|
+
"meaning": "Ledger write or verify failed; fail closed — no ALLOW payload.",
|
|
53
|
+
"client_hint": "Check disk/permissions for audit ledger; retry later."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"code": "DENY_FRESHNESS",
|
|
57
|
+
"http_analogy": 409,
|
|
58
|
+
"mode": "B",
|
|
59
|
+
"authorizing": false,
|
|
60
|
+
"metadata_disclosed": false,
|
|
61
|
+
"meaning": "Map or evidence stale when freshness required.",
|
|
62
|
+
"client_hint": "Re-index / refresh map rev; retry."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"code": "DENY_EVIDENCE",
|
|
66
|
+
"http_analogy": 403,
|
|
67
|
+
"mode": "B",
|
|
68
|
+
"authorizing": false,
|
|
69
|
+
"metadata_disclosed": false,
|
|
70
|
+
"meaning": "Required security evidence failed (e.g. lockdown/evidence profile requirement).",
|
|
71
|
+
"client_hint": "Run knosky doctor; satisfy profile evidence or choose a lower claim profile."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"code": "ERROR_INVALID_INPUT",
|
|
75
|
+
"http_analogy": 400,
|
|
76
|
+
"mode": ["A", "B"],
|
|
77
|
+
"authorizing": false,
|
|
78
|
+
"metadata_disclosed": false,
|
|
79
|
+
"meaning": "Bad arguments / schema validation failure.",
|
|
80
|
+
"client_hint": "Fix tool arguments; see validation details (non-oracle)."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"code": "ERROR_INDEX",
|
|
84
|
+
"http_analogy": 500,
|
|
85
|
+
"mode": ["A", "B"],
|
|
86
|
+
"authorizing": false,
|
|
87
|
+
"metadata_disclosed": false,
|
|
88
|
+
"meaning": "City/index load missing or corrupt.",
|
|
89
|
+
"client_hint": "Build or repair local map index."
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"code": "ADVISORY_UNAUTH",
|
|
93
|
+
"http_analogy": 200,
|
|
94
|
+
"mode": "A",
|
|
95
|
+
"authorizing": false,
|
|
96
|
+
"metadata_disclosed": true,
|
|
97
|
+
"meaning": "Explicit Mode A non-governed advisory navigation. Not authorized, not policy-certified, not swarm-safe.",
|
|
98
|
+
"client_hint": "Treat as structural tips only; verify before acting; do not claim governance.",
|
|
99
|
+
"aliases_rejected": ["ALLOW", "authorized", "swarm-safe"]
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"closed_set": [
|
|
103
|
+
"ALLOW",
|
|
104
|
+
"DENY",
|
|
105
|
+
"DENY_IDENTITY",
|
|
106
|
+
"DENY_POLICY",
|
|
107
|
+
"DENY_AUDIT",
|
|
108
|
+
"DENY_FRESHNESS",
|
|
109
|
+
"DENY_EVIDENCE",
|
|
110
|
+
"ERROR_INVALID_INPUT",
|
|
111
|
+
"ERROR_INDEX",
|
|
112
|
+
"ADVISORY_UNAUTH"
|
|
113
|
+
],
|
|
114
|
+
"rules": [
|
|
115
|
+
"No open-string decision codes on the wire.",
|
|
116
|
+
"Mode B terminal ALLOW requires receipt_id.",
|
|
117
|
+
"All DENY_* and DENY must set metadata_disclosed=false for restricted data.",
|
|
118
|
+
"ADVISORY_UNAUTH must appear on Mode A route responses.",
|
|
119
|
+
"Pack smoke fixtures snapshot this closed_set.",
|
|
120
|
+
"CI gate: unknown code in responses fails release."
|
|
121
|
+
],
|
|
122
|
+
"safe_deny_package": {
|
|
123
|
+
"required_fields": ["decision_code", "mode", "metadata_disclosed"],
|
|
124
|
+
"optional_fields": ["receipt_id", "next_action", "request_id"],
|
|
125
|
+
"forbidden_on_deny": [
|
|
126
|
+
"restricted path lists",
|
|
127
|
+
"blocked district node dumps",
|
|
128
|
+
"other agents lease inventories",
|
|
129
|
+
"file bodies",
|
|
130
|
+
"secrets"
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# KnoSky Guarantee Ladder L0–L3 (SSOT)
|
|
2
|
+
|
|
3
|
+
```yaml
|
|
4
|
+
---
|
|
5
|
+
id: knosky-ladder-l0-l3
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
status: draft-freeze
|
|
8
|
+
dec: DEC-110
|
|
9
|
+
last_updated: 2026-07-19
|
|
10
|
+
consumers:
|
|
11
|
+
- README.md / SECURITY.md / PRIVACY.md
|
|
12
|
+
- knosky.com /trust and /product
|
|
13
|
+
- knosky.wiki govern/ladder
|
|
14
|
+
- knosky doctor claim_ceiling
|
|
15
|
+
- pack onboarding blurbs
|
|
16
|
+
---
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
Public, checkable promises for installers and agents. **Never claim a higher level than `knosky doctor` reports for that install.**
|
|
22
|
+
|
|
23
|
+
Related freezes:
|
|
24
|
+
|
|
25
|
+
- Tool menu → `tool-menu.json` (DEC-108)
|
|
26
|
+
- Decision codes → `decision-codes.json` (DEC-108 / DEC-106)
|
|
27
|
+
- Architecture → DOC-02; threat model → DOC-05
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Ladder at a glance
|
|
32
|
+
|
|
33
|
+
| Level | Name | One-line promise | Mode |
|
|
34
|
+
| :---: | :--- | :--- | :--- |
|
|
35
|
+
| **L0** | Local map | Index and navigate locally; **no KnoSky upload by default** | Map / Mode A |
|
|
36
|
+
| **L1** | Share-safe artifact | Artifact suitable to share only after **fail-closed secret controls** | Share tooling |
|
|
37
|
+
| **L2** | Governed evaluator | **Mode B**: identity + policy + audit receipt (or safe DENY) before authorized routes | Mode B |
|
|
38
|
+
| **L3** | Swarm domain | **Full coordinator** on Mode B: leases, quotas, backpressure, claims, fairness, multi-agent audit, anti-probe, ops heatmap, benchmarks | Mode B + L3 |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## L0 — Local map
|
|
43
|
+
|
|
44
|
+
### Promise
|
|
45
|
+
|
|
46
|
+
- Runs on the operator machine / domain.
|
|
47
|
+
- Builds a **map of pointers and short projections**, not a body store (DEC-107).
|
|
48
|
+
- Core path does **not** require a KnoSky account or always-on telemetry (DEC-114).
|
|
49
|
+
|
|
50
|
+
### You may say
|
|
51
|
+
|
|
52
|
+
- “Local map”, “citations”, “where to look first”, “MCP map tools”
|
|
53
|
+
|
|
54
|
+
### You must not say
|
|
55
|
+
|
|
56
|
+
- “Authorized”, “policy-enforced”, “swarm-safe”, “zero data risk”
|
|
57
|
+
|
|
58
|
+
### Checks (doctor / tests)
|
|
59
|
+
|
|
60
|
+
- Index builds without required egress
|
|
61
|
+
- CONTRACT allowlist: no bodies in index
|
|
62
|
+
- Tier 0 tools available
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## L1 — Share-safe artifact
|
|
67
|
+
|
|
68
|
+
### Promise
|
|
69
|
+
|
|
70
|
+
- Share/export path runs **secret-like detection** and **fails closed** on hits (explicit operator override only).
|
|
71
|
+
- Absolute roots stripped to basename by default.
|
|
72
|
+
- Operator still reviews before publishing (honest residual risk).
|
|
73
|
+
|
|
74
|
+
### You may say
|
|
75
|
+
|
|
76
|
+
- “Share-safe city/bundle”, “failed closed on secrets”, “review before share”
|
|
77
|
+
|
|
78
|
+
### You must not say
|
|
79
|
+
|
|
80
|
+
- “Guaranteed free of all secrets forever”, “safe for any public unauth multi-tenant host without review”
|
|
81
|
+
|
|
82
|
+
### Checks
|
|
83
|
+
|
|
84
|
+
- Seeded secret fixture fails share-safe build
|
|
85
|
+
- Safety report emitted
|
|
86
|
+
- Demo corpus uses share-safe artifacts only
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## L2 — Governed evaluator (Mode B)
|
|
91
|
+
|
|
92
|
+
### Promise
|
|
93
|
+
|
|
94
|
+
Any claim of **authorized / governed / policy-checked** routing requires:
|
|
95
|
+
|
|
96
|
+
1. Bound **identity** (authoritative agent; lease store pattern — no payload spoof)
|
|
97
|
+
2. **Policy lattice** decision + district classification → authorized subgraph
|
|
98
|
+
3. **Audit receipt** written (metadata-only) before ALLOW payload
|
|
99
|
+
4. Otherwise **DENY_*** with **no restricted metadata**
|
|
100
|
+
|
|
101
|
+
Decision codes: see `decision-codes.json` (`ALLOW`, `DENY_*`, errors). Mode A may still exist **only** if labeled `ADVISORY_UNAUTH`.
|
|
102
|
+
|
|
103
|
+
### You may say
|
|
104
|
+
|
|
105
|
+
- “Governed route”, “authorized subgraph”, “policy-checked”, “audit-backed decision”
|
|
106
|
+
|
|
107
|
+
### You must not say
|
|
108
|
+
|
|
109
|
+
- That plain advisory MCP (today’s unlabeled path) is L2
|
|
110
|
+
- “Kernel no-egress proven on Windows” when doctor reports unsupported (F0.5 honesty)
|
|
111
|
+
|
|
112
|
+
### Checks
|
|
113
|
+
|
|
114
|
+
- Anonymous governed call → `DENY_IDENTITY`
|
|
115
|
+
- Audit failure → `DENY_AUDIT` and no route body
|
|
116
|
+
- Policy deny does not leak restricted paths
|
|
117
|
+
- Doctor `mode_b_ready` green
|
|
118
|
+
- Menu SSOT matches binary
|
|
119
|
+
|
|
120
|
+
### Platform honesty
|
|
121
|
+
|
|
122
|
+
| Platform | Lockdown |
|
|
123
|
+
| :--- | :--- |
|
|
124
|
+
| Linux | Real enforcement path when tools present |
|
|
125
|
+
| macOS | Partial / network-oriented |
|
|
126
|
+
| Windows | Doctor must report **unsupported/inactive** until packaging proves otherwise |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## L3 — Swarm domain (full coordinator)
|
|
131
|
+
|
|
132
|
+
### Promise (DEC-113 — Wave 1 floor is **full**, not label-only)
|
|
133
|
+
|
|
134
|
+
On top of green L2:
|
|
135
|
+
|
|
136
|
+
| Capability | Required |
|
|
137
|
+
| :--- | :---: |
|
|
138
|
+
| Distinct agent identities | YES |
|
|
139
|
+
| Route leases (issue/renew/expire/bind) | YES |
|
|
140
|
+
| Quotas | YES |
|
|
141
|
+
| Backpressure | YES |
|
|
142
|
+
| File/district claims (traffic, not VCS locks) | YES |
|
|
143
|
+
| Fairness / conflict rules | YES |
|
|
144
|
+
| Multi-agent audit stream | YES |
|
|
145
|
+
| Operator swarm dashboard / heatmap | YES |
|
|
146
|
+
| Anti-probe defenses | YES |
|
|
147
|
+
| Swarm benchmarks | YES |
|
|
148
|
+
|
|
149
|
+
### You may say
|
|
150
|
+
|
|
151
|
+
- “Swarm-coordinated”, “lease-governed multi-agent routing”, “domain swarm-safe under policy”
|
|
152
|
+
|
|
153
|
+
### You must not say
|
|
154
|
+
|
|
155
|
+
- “Swarm-safe” when only the lease helper exists
|
|
156
|
+
- Multi-tenant **cloud** swarm isolation (DEC-109 non-goal)
|
|
157
|
+
- Preview-only labeling as the Wave 1 floor (would need **new DEC** to thin)
|
|
158
|
+
|
|
159
|
+
### Checks
|
|
160
|
+
|
|
161
|
+
- Doctor `l3_ready` green
|
|
162
|
+
- Lease reuse / spoof denials
|
|
163
|
+
- Coordinator down + `require_route_lease` → fail closed
|
|
164
|
+
- Swarm benchmarks in release gate set
|
|
165
|
+
- Claims lint blocks L3 marketing if doctor ceiling < L3
|
|
166
|
+
|
|
167
|
+
### Prerequisite law
|
|
168
|
+
|
|
169
|
+
```text
|
|
170
|
+
L3 ⊆ requires L2 Mode B identity + policy + audit
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Claim ceiling algorithm (normative)
|
|
176
|
+
|
|
177
|
+
```text
|
|
178
|
+
ceiling = L0
|
|
179
|
+
if share_safe_controls_green: ceiling = max(ceiling, L1)
|
|
180
|
+
if mode_b_composition_green and doctor.mode_b_ready: ceiling = max(ceiling, L2)
|
|
181
|
+
if full_l3_modules_green and doctor.l3_ready: ceiling = max(ceiling, L3)
|
|
182
|
+
if windows and claim needs kernel_lockdown_evidence: do not raise L2 badge on lockdown_is_proven
|
|
183
|
+
public_copy.claim_level must be <= ceiling
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Adoption profiles (language only; detailed FR in DOC-01)
|
|
189
|
+
|
|
190
|
+
| Profile | Typical ceiling intent |
|
|
191
|
+
| :--- | :--- |
|
|
192
|
+
| Solo | L0–L1 fast path; explicit Mode A OK |
|
|
193
|
+
| Team | L2 Mode B default for governed tools |
|
|
194
|
+
| Regulated | L2+ with evidence requirements; security profile; Windows honesty loud |
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Metrics relationship (DEC-114)
|
|
199
|
+
|
|
200
|
+
Ladder honesty is independent of adoption metrics:
|
|
201
|
+
|
|
202
|
+
- **No always-on telemetry** at any L
|
|
203
|
+
- Opt-in counters default **OFF**
|
|
204
|
+
- Public benchmarks may support proof without elevating ladder by slogans alone
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Banned overclaim phrases (claims lint seeds)
|
|
209
|
+
|
|
210
|
+
Do not use without matching doctor ceiling + evidence:
|
|
211
|
+
|
|
212
|
+
- zero-risk / zero data risk
|
|
213
|
+
- fully understands your codebase
|
|
214
|
+
- SOC2 certified (unless true externally)
|
|
215
|
+
- multi-tenant SaaS isolation (W1)
|
|
216
|
+
- swarm-safe (unless L3 green)
|
|
217
|
+
- authorized / policy-enforced (unless L2 green)
|
|
218
|
+
- Windows kernel no-egress guaranteed (unless doctor proves)
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Change control
|
|
223
|
+
|
|
224
|
+
| Version | Date | Notes |
|
|
225
|
+
| :--- | :--- | :--- |
|
|
226
|
+
| 1.0.0 | 2026-07-19 | Initial SSOT freeze draft for Wave 1 surfaces |
|
|
227
|
+
|
|
228
|
+
Edits require DEC-110 revisit or superseding DEC; bump version; regenerate README/wiki/com renders.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
*SSOT ladder — bind all public L0–L3 language to this file.*
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema_comment": "KnoSky DEC-108 tool menu SSOT — Wave 1 freeze. README = wiki = site = binary must match.",
|
|
3
|
+
"id": "knosky-tool-menu",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"status": "draft-freeze",
|
|
6
|
+
"dec": "DEC-108",
|
|
7
|
+
"last_updated": "2026-07-19",
|
|
8
|
+
"profiles": {
|
|
9
|
+
"coding": {
|
|
10
|
+
"description": "Default agent packs (Hermes, Claude Code, Cursor, Codex CLI, VS Code MCP). No audit ledger tools.",
|
|
11
|
+
"includes_tiers": ["tier0_map", "tier1_governed"]
|
|
12
|
+
},
|
|
13
|
+
"security": {
|
|
14
|
+
"description": "Operator / security / CI verify profile. Includes coding tools plus audit tools.",
|
|
15
|
+
"includes_tiers": ["tier0_map", "tier1_governed", "security_audit"]
|
|
16
|
+
},
|
|
17
|
+
"advisory": {
|
|
18
|
+
"description": "Explicit non-authorizing exploration. Mode A labels required. Must not be marketed as governed.",
|
|
19
|
+
"includes_tiers": ["tier0_map"],
|
|
20
|
+
"allows_mode_a_route": true
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"tiers": {
|
|
24
|
+
"tier0_map": {
|
|
25
|
+
"name": "Tier 0 map",
|
|
26
|
+
"authorizing": false,
|
|
27
|
+
"label_when_no_policy": "non-authorizing map",
|
|
28
|
+
"tools": [
|
|
29
|
+
{
|
|
30
|
+
"name": "kc_search",
|
|
31
|
+
"summary": "Search map nodes by text/metadata over the city index.",
|
|
32
|
+
"mode_default": "A",
|
|
33
|
+
"profiles": ["coding", "security", "advisory"]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "kc_get_node",
|
|
37
|
+
"summary": "Fetch a single node projection by id.",
|
|
38
|
+
"mode_default": "A",
|
|
39
|
+
"profiles": ["coding", "security", "advisory"]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "kc_list_categories",
|
|
43
|
+
"summary": "List category/district manifest entries.",
|
|
44
|
+
"mode_default": "A",
|
|
45
|
+
"profiles": ["coding", "security", "advisory"]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "kc_get_provenance",
|
|
49
|
+
"summary": "Return provenance pointers for a node (live SoT refs).",
|
|
50
|
+
"mode_default": "A",
|
|
51
|
+
"profiles": ["coding", "security", "advisory"]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "kc_related",
|
|
55
|
+
"summary": "Related nodes via map edges (tests/docs/neighbors).",
|
|
56
|
+
"mode_default": "A",
|
|
57
|
+
"profiles": ["coding", "security", "advisory"]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"tier1_governed": {
|
|
62
|
+
"name": "Tier 1 governed",
|
|
63
|
+
"authorizing": true,
|
|
64
|
+
"requires_mode_b_for_allow": true,
|
|
65
|
+
"tools": [
|
|
66
|
+
{
|
|
67
|
+
"name": "kc_route",
|
|
68
|
+
"summary": "Route GPS toward a destination. Dual-mode: Mode B ALLOW/DENY_* with receipt, or labeled Mode A ADVISORY_UNAUTH.",
|
|
69
|
+
"mode_default": "B",
|
|
70
|
+
"dual_mode": true,
|
|
71
|
+
"profiles": ["coding", "security"],
|
|
72
|
+
"advisory_profile": "advisory",
|
|
73
|
+
"decision_codes_used": true
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "kc_bundle",
|
|
77
|
+
"summary": "Build share-oriented intent-manifest/bundle under same gates + fail-closed secret scan.",
|
|
78
|
+
"mode_default": "B",
|
|
79
|
+
"profiles": ["coding", "security"],
|
|
80
|
+
"decision_codes_used": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "kc_policy_check",
|
|
84
|
+
"summary": "Dry-run policy decision + reasons without full route body.",
|
|
85
|
+
"mode_default": "B",
|
|
86
|
+
"profiles": ["coding", "security"],
|
|
87
|
+
"decision_codes_used": true
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"security_audit": {
|
|
92
|
+
"name": "Security profile only",
|
|
93
|
+
"authorizing": false,
|
|
94
|
+
"profiles_only": ["security"],
|
|
95
|
+
"tools": [
|
|
96
|
+
{
|
|
97
|
+
"name": "kc_audit_query",
|
|
98
|
+
"summary": "Query local route/swarm decision audit events (metadata-only).",
|
|
99
|
+
"mode_default": "B",
|
|
100
|
+
"profiles": ["security"],
|
|
101
|
+
"forbidden_profiles": ["coding", "advisory"]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "kc_audit_verify",
|
|
105
|
+
"summary": "Verify audit chain / receipt integrity.",
|
|
106
|
+
"mode_default": "B",
|
|
107
|
+
"profiles": ["security"],
|
|
108
|
+
"forbidden_profiles": ["coding", "advisory"]
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"pack_matrix": {
|
|
114
|
+
"P0": ["hermes", "claude-code", "cursor", "codex-cli"],
|
|
115
|
+
"P1": ["vscode-mcp", "greptile-recipe", "gha-pr-gps"],
|
|
116
|
+
"default_profile_for_packs": "coding",
|
|
117
|
+
"must_not_include_on_coding_packs": ["kc_audit_query", "kc_audit_verify"]
|
|
118
|
+
},
|
|
119
|
+
"release_gates": [
|
|
120
|
+
"AR-03: README tool list == wiki tool list == knosky.com protocol summary == this file == mcp registerTool names",
|
|
121
|
+
"Mode A tools/responses must carry ADVISORY_UNAUTH when non-governed",
|
|
122
|
+
"Mode B ALLOW requires identity + policy + audit receipt",
|
|
123
|
+
"Decision codes closed set from decision-codes.json"
|
|
124
|
+
],
|
|
125
|
+
"non_goals": [
|
|
126
|
+
"Multi-tenant SaaS tool surface",
|
|
127
|
+
"Audit tools on default coding packs",
|
|
128
|
+
"Wave 2 native app exclusive tools as W1 dependencies"
|
|
129
|
+
]
|
|
130
|
+
}
|