@azure-id/orc 1.4.2 → 1.5.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 (36) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/README.md +46 -46
  3. package/bin/cli.js +5918 -400
  4. package/bin/mockrun-catalog.js +4 -0
  5. package/bin/verify-contracts.js +4475 -4410
  6. package/bin/verify-package.js +21 -2
  7. package/bin/webui/api.js +108 -8
  8. package/bin/webui/app.html +9 -0
  9. package/bin/webui/css/06-responsive.css +14 -0
  10. package/bin/webui/css/panels/test.css +132 -0
  11. package/bin/webui/fixtures/index.js +23 -1
  12. package/bin/webui/fixtures/test.js +547 -0
  13. package/bin/webui/i18n/en/common.json +1 -0
  14. package/bin/webui/i18n/en/nav.json +1 -0
  15. package/bin/webui/i18n/en/overview.json +4 -0
  16. package/bin/webui/i18n/en/test.json +141 -0
  17. package/bin/webui/i18n/id/common.json +1 -0
  18. package/bin/webui/i18n/id/nav.json +1 -0
  19. package/bin/webui/i18n/id/overview.json +4 -0
  20. package/bin/webui/i18n/id/test.json +141 -0
  21. package/bin/webui/js/01-i18n.js +1 -0
  22. package/bin/webui/js/panels/challenge.js +8 -3
  23. package/bin/webui/js/panels/overview.js +10 -0
  24. package/bin/webui/js/panels/test.js +733 -0
  25. package/bin/webui/serve.js +572 -557
  26. package/mock-run/orc-test.md +327 -0
  27. package/package.json +1 -1
  28. package/templates/agents/MODEL-MAPPING.md +2 -0
  29. package/templates/agents/orc-test-designer-opus-5-high.md +158 -0
  30. package/templates/agents/orc-test-interpreter-opus-5-low.md +130 -0
  31. package/templates/commands/orc-test.md +66 -0
  32. package/templates/skills/_shared/extra-dispatch.md +1346 -1337
  33. package/templates/skills/_shared/live-target.md +188 -0
  34. package/templates/skills/_shared/phases/trace.md +2 -2
  35. package/templates/skills/_shared/wait.md +241 -240
  36. package/templates/skills/orc-test/SKILL.md +233 -0
@@ -0,0 +1,66 @@
1
+ ---
2
+ description: Run the tests against the real running system — happy path to security — and report only what was observed
3
+ ---
4
+
5
+ Use the **orc-test** skill. Standalone — no plan, no build, no code written into
6
+ your project.
7
+
8
+ Every other ORC lane reasons about your system. This one **runs it**:
9
+
10
+ > **A test that ran is a FACT; a test that was written is an OPINION.**
11
+
12
+ ORC already has a lane that WRITES tests and never runs them (Phase 6.5,
13
+ `test-generator/`). This is the mirror image, and the two never mix: `/orc-test`
14
+ writes nothing into your test tree and runs everything.
15
+
16
+ **It never edits the system it is testing.** If the server will not come up, it
17
+ prints exactly what it ran and the tail of the output, and hands back. You fix
18
+ it, and re-run for free — the same shape as `/orc-challenge`, and for the same
19
+ reason: a session that just fixed the code cannot be trusted to measure it.
20
+
21
+ **It never reports a result it did not observe.** Three verdicts and no fourth:
22
+ `pass` (observed, matched), `fail` (observed, did not match), and `unknown` —
23
+ not observed. `unknown` keeps its slot in the report and never becomes a pass.
24
+ A flake is recorded, never retried away: there is no retry count, because if the
25
+ same case answers differently twice, *that instability is the finding*.
26
+
27
+ One pass:
28
+
29
+ 1. **Target** — `orc test init <slug>` asks what it must not guess: back end or
30
+ front end, local or remote, the base URL. On a remote target it also requires
31
+ `--authorized "<who authorized this, and where it is recorded>"`, stored
32
+ verbatim and reprinted at the head of every report. ORC cannot verify
33
+ authorization and does not pretend to — it makes the assertion impossible to
34
+ skip. Frozen, and never asked again.
35
+ 2. **Surface** — free, deterministic: an OpenAPI or GraphQL spec on disk, the
36
+ same spec at the target, route extraction by framework fingerprint, FE router
37
+ config. Anything ambiguous comes back as `unresolved[]` and is never guessed.
38
+ The **code-vs-live diff** is a first-class output: routes that answer live and
39
+ exist in no source file are zombie APIs.
40
+ 3. **Flow** — it digs the repo for how a request reaches your endpoint: the
41
+ route registration, the middleware in order, the handler, what it writes, what
42
+ must be true first, which fields name an object, and the login flow itself.
43
+ 4. **Environment** (local only) — it brings the system up and waits for health.
44
+ Five states, one next action each.
45
+ 5. **Cases** — the CLI derives the bulk for free: equivalence partitions,
46
+ boundary values, method and content-type negatives, stateful create → read →
47
+ update → delete sequences. An agent fills only what a schema cannot know.
48
+ 6. **Run** — paced, capped, and fenced to the frozen origin. A 429 is a RESULT,
49
+ not an error: it means rate limiting works. Every case leaves its exact
50
+ request, its exact response and a reproducible `curl`, with every credential
51
+ redacted **before the bytes reach disk**.
52
+ 7. **Report** — `orc/orc-test/<slug>/REPORT.md`, written for someone who does
53
+ not read code.
54
+
55
+ The security tier is a **closed set** mapped to the OWASP API Security Top 10
56
+ (2023), and it demonstrates a CONDITION rather than an extraction — confirming
57
+ an exploit is your decision on your authority. With one identity, BOLA and BFLA
58
+ report `UNCHECKABLE`, which keeps its slot and never becomes a pass.
59
+
60
+ **The run folder is never staged.** Evidence contains real response bodies from
61
+ a real system. The lane offers you the one `.gitignore` line; it does not edit
62
+ `.gitignore` itself.
63
+
64
+ Read the state back any time without this lane: `orc test status <slug>`.
65
+
66
+ The slug to open or reopen (or nothing, and it will ask): $ARGUMENTS