norn-cli 2.9.7 → 2.9.8
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/NOW.md +58 -0
- package/README.md +1 -31
- package/package.json +18 -7
package/NOW.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# NOW — Active Work Board
|
|
2
|
+
|
|
3
|
+
> **The single source of truth for what we are working on _right now_** — for Peter and
|
|
4
|
+
> for every AI agent (Claude, Codex, Copilot, Cursor, any). Deliberately tool-agnostic:
|
|
5
|
+
> it lives here in the repo, **not** in any one assistant's memory or private notes.
|
|
6
|
+
>
|
|
7
|
+
> We have a lot of planning docs; this board exists so nobody (human or AI) has to guess
|
|
8
|
+
> what's current. If it's on this board, it's the work. If it's not, it isn't — yet.
|
|
9
|
+
|
|
10
|
+
## How this board works
|
|
11
|
+
|
|
12
|
+
- **Empty by default.** Nothing is "current" unless it has been explicitly **Accepted**
|
|
13
|
+
onto this board by Peter. An empty "Active now" means: no directed work in flight —
|
|
14
|
+
don't start big work off a backlog/plan doc without Peter accepting it here first.
|
|
15
|
+
- **Accepting work:** Peter says "Accept X" (or moves it here). That's the signal it
|
|
16
|
+
becomes current. Until then, ideas live in the plan/backlog docs, not here.
|
|
17
|
+
- **This board is an _index_, not the detail.** Each item is one or two lines + a link to
|
|
18
|
+
its real plan doc. Keep the detail in the linked doc; keep this page short and scannable.
|
|
19
|
+
- **Finishing work:** when an item is done, move it to "Recently done" (keep the last
|
|
20
|
+
handful), then prune. Don't let this page grow.
|
|
21
|
+
- **Agents:** treat items under "Active now" as the current priority order. Do these
|
|
22
|
+
before picking up anything from the wider `Docs/` set.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Active now
|
|
27
|
+
|
|
28
|
+
_Accepted 2026-07-03. Two workstreams: build the paid direction, and market it._
|
|
29
|
+
|
|
30
|
+
### 1. 🔨 Contract & Drift — BUILD (anchor)
|
|
31
|
+
Turn Norn's existing `matchesSchema` into the job the market will pay for: **catch
|
|
32
|
+
breaking API changes on the PR.** Do **Stage 1 → Stage 2 first** (cheap, pure reuse);
|
|
33
|
+
Stage 3 (drift-as-PR-verdict) is the sellable milestone; Stage 4 is fenced off until a
|
|
34
|
+
Stage-3 buyer pays.
|
|
35
|
+
→ Plan: [`Docs/contract_drift_build_plan.md`](Docs/contract_drift_build_plan.md) · Evidence: `Docs/market_signals.md` Signal 004
|
|
36
|
+
**Next step:** build a thin Stage 1 slice, then Peter QA-dogfoods it.
|
|
37
|
+
|
|
38
|
+
### 2. 📣 Marketing & positioning — Voiden playbook (message + distribution together)
|
|
39
|
+
Sharpen the pitch **and** get it into dev-native rooms — one workstream. Channel
|
|
40
|
+
correction after the LinkedIn flop: copy Voiden's **distribution, not their business
|
|
41
|
+
model**. Phased do → prove → gate: sharpen the drift hook → publish migration essays on
|
|
42
|
+
**dev.to / Reddit / Show HN** (does content travel?) → comparison pages + directories →
|
|
43
|
+
launch on the Stage-3 drift demo → community/open-core (earned, last).
|
|
44
|
+
→ Plan: [`Docs/marketing_plan.md`](Docs/marketing_plan.md) · Evidence: `Docs/market_signals.md` Signal 004 · [[norn-reddit-disclosed-selling]] · spine stays locked ([[norn-messaging-locked]])
|
|
45
|
+
**Next step:** Phase 0 — write the one-paragraph "why Norn, now" hook (the field-rename-caught-on-the-PR story) + 3 headline angles.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Backlog / accepted-but-not-started
|
|
50
|
+
|
|
51
|
+
_(empty)_
|
|
52
|
+
|
|
53
|
+
## Recently done
|
|
54
|
+
|
|
55
|
+
_(empty)_
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
_Last updated: 2026-07-03_
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Norn
|
|
2
2
|
|
|
3
|
-
Norn keeps API tests
|
|
3
|
+
Norn keeps API tests and database checks in repeatable, version-controlled files your whole team can trust. Author, inspect, and debug them in VS Code, then run the same files from the CLI and CI.
|
|
4
4
|
|
|
5
5
|
### Simple API Requests
|
|
6
6
|
|
|
@@ -27,7 +27,6 @@ That means you can:
|
|
|
27
27
|
- `.nornenv` files for environments and secrets
|
|
28
28
|
- `.nornapi` files for reusable endpoint definitions
|
|
29
29
|
- `.nornsql` files for database queries and commands
|
|
30
|
-
- `.nornk8s` files for Kubernetes commands and runbooks
|
|
31
30
|
- syntax highlighting, IntelliSense, and diagnostics
|
|
32
31
|
- response inspection, JSON diffing, and click-to-generate assertions
|
|
33
32
|
- tagged and parameterized test execution in VS Code and the CLI
|
|
@@ -64,7 +63,6 @@ Use Norn to:
|
|
|
64
63
|
- run a whole sequence from the editor
|
|
65
64
|
- debug a sequence with breakpoints
|
|
66
65
|
- run test sequences from the Testing view
|
|
67
|
-
- inspect live Kubernetes pods and logs from `.nornk8s` files
|
|
68
66
|
|
|
69
67
|
## In The CLI
|
|
70
68
|
|
|
@@ -73,35 +71,8 @@ The CLI uses the same execution model as the extension, so local runs and CI run
|
|
|
73
71
|
```bash
|
|
74
72
|
npm install -g norn-cli
|
|
75
73
|
norn ./tests/smoke.norn -e dev
|
|
76
|
-
norn ./runbooks/triage.nornk8s --context prelive
|
|
77
74
|
```
|
|
78
75
|
|
|
79
|
-
## Kubernetes Runbooks
|
|
80
|
-
|
|
81
|
-
`.nornk8s` files turn common kubectl triage commands into reusable runbooks. Standalone
|
|
82
|
-
`get pods`, `describe pod`, and `logs` commands open styled VS Code views with live pod
|
|
83
|
-
and log updates. Helper sequences run explicitly, while `runbook sequence` blocks are
|
|
84
|
-
automatic CLI entry points.
|
|
85
|
-
|
|
86
|
-
```nornk8s
|
|
87
|
-
namespace {{ordersNs}}
|
|
88
|
-
|
|
89
|
-
get pods
|
|
90
|
-
logs orders-api-7d9f --tail 500
|
|
91
|
-
|
|
92
|
-
sequence RestartOrders
|
|
93
|
-
restart deployment/orders-api
|
|
94
|
-
end sequence
|
|
95
|
-
|
|
96
|
-
runbook sequence ClusterCheck
|
|
97
|
-
get pods
|
|
98
|
-
get pods -n kube-system
|
|
99
|
-
end sequence
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
Select a Kubernetes context from the VS Code context lens or pass `--context` to the
|
|
103
|
-
CLI. Restart commands require a VS Code confirmation or CLI `--yes`.
|
|
104
|
-
|
|
105
76
|
## `.nornenv` Templates And Extends
|
|
106
77
|
|
|
107
78
|
Use `[template:name]` sections for reusable environment building blocks, then compose selectable `[env:name]` sections with `extends`. Only templates can be extended. Templates are not selectable from the VS Code environment picker or CLI; only `[env:...]` names can be used with `-e`.
|
|
@@ -186,7 +157,6 @@ Behavior:
|
|
|
186
157
|
- QA and automation work that needs readable test flows
|
|
187
158
|
- regression and smoke suites that should run the same way locally and in CI
|
|
188
159
|
- projects that want API requests and API tests to live next to the code
|
|
189
|
-
- teams that want repeatable Kubernetes triage runbooks beside their services
|
|
190
160
|
|
|
191
161
|
Diff preview test line.
|
|
192
162
|
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "norn-cli",
|
|
3
3
|
"displayName": "Norn",
|
|
4
|
-
"description": "Version-controlled API
|
|
5
|
-
"version": "2.9.
|
|
4
|
+
"description": "Version-controlled API and database tests. Author in VS Code, then run the same files from the CLI and CI.",
|
|
5
|
+
"version": "2.9.8",
|
|
6
6
|
"publisher": "Norn-PeterKrustanov",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Peter Krastanov"
|
|
@@ -29,10 +29,7 @@
|
|
|
29
29
|
"api automation",
|
|
30
30
|
"openapi",
|
|
31
31
|
"http",
|
|
32
|
-
"test automation"
|
|
33
|
-
"kubernetes",
|
|
34
|
-
"kubectl",
|
|
35
|
-
"runbooks"
|
|
32
|
+
"test automation"
|
|
36
33
|
],
|
|
37
34
|
"engines": {
|
|
38
35
|
"vscode": "^1.108.1"
|
|
@@ -219,6 +216,20 @@
|
|
|
219
216
|
]
|
|
220
217
|
},
|
|
221
218
|
"menus": {
|
|
219
|
+
"commandPalette": [
|
|
220
|
+
{
|
|
221
|
+
"command": "norn.k8s.runLine",
|
|
222
|
+
"when": "false"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"command": "norn.k8s.runSequence",
|
|
226
|
+
"when": "false"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"command": "norn.k8s.selectContext",
|
|
230
|
+
"when": "false"
|
|
231
|
+
}
|
|
232
|
+
],
|
|
222
233
|
"explorer/context": [
|
|
223
234
|
{
|
|
224
235
|
"command": "norn.createStarterCatalog",
|
|
@@ -435,7 +446,7 @@
|
|
|
435
446
|
"id": "norn.chat",
|
|
436
447
|
"name": "norn",
|
|
437
448
|
"fullName": "Norn",
|
|
438
|
-
"description": "Ask questions about Norn syntax, generate requests
|
|
449
|
+
"description": "Ask questions about Norn syntax, generate requests, explain sequences, and convert cURL/HTTP to Norn",
|
|
439
450
|
"isSticky": true,
|
|
440
451
|
"commands": [
|
|
441
452
|
{
|