@azure-id/orc 1.0.0 → 1.1.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 (46) hide show
  1. package/CHANGELOG.md +2437 -2367
  2. package/README.md +694 -631
  3. package/bin/cli.js +639 -0
  4. package/bin/verify-contracts.js +74 -0
  5. package/bin/verify-package.js +568 -563
  6. package/bin/webui/api.js +15 -0
  7. package/bin/webui/app.html +210 -207
  8. package/bin/webui/css/panels/wait.css +123 -0
  9. package/bin/webui/fixtures/index.js +7 -0
  10. package/bin/webui/fixtures/wait.js +97 -0
  11. package/bin/webui/i18n/en/nav.json +21 -20
  12. package/bin/webui/i18n/en/wait.json +41 -0
  13. package/bin/webui/i18n/id/nav.json +21 -20
  14. package/bin/webui/i18n/id/wait.json +41 -0
  15. package/bin/webui/js/01-i18n.js +151 -150
  16. package/bin/webui/js/panels/wait.js +253 -0
  17. package/package.json +1 -1
  18. package/templates/commands/orc-wait.md +19 -0
  19. package/templates/hooks/orc-statusline.js +39 -0
  20. package/templates/skills/_shared/phases/preflight.md +22 -0
  21. package/templates/skills/_shared/wait.md +240 -0
  22. package/templates/skills/orc/SKILL.md +6 -1
  23. package/templates/skills/orc-aftermath/SKILL.md +6 -1
  24. package/templates/skills/orc-analyze/SKILL.md +6 -1
  25. package/templates/skills/orc-boundary/SKILL.md +6 -1
  26. package/templates/skills/orc-brainstorm/SKILL.md +6 -1
  27. package/templates/skills/orc-budget/SKILL.md +6 -1
  28. package/templates/skills/orc-challenge/SKILL.md +6 -1
  29. package/templates/skills/orc-claude/SKILL.md +6 -1
  30. package/templates/skills/orc-diy/SKILL.md +6 -1
  31. package/templates/skills/orc-doc/SKILL.md +6 -1
  32. package/templates/skills/orc-explain/SKILL.md +5 -0
  33. package/templates/skills/orc-export/SKILL.md +5 -0
  34. package/templates/skills/orc-fast/SKILL.md +6 -1
  35. package/templates/skills/orc-grill/SKILL.md +6 -1
  36. package/templates/skills/orc-learn/SKILL.md +6 -1
  37. package/templates/skills/orc-mini/SKILL.md +6 -1
  38. package/templates/skills/orc-pact/SKILL.md +6 -1
  39. package/templates/skills/orc-pattern/SKILL.md +6 -1
  40. package/templates/skills/orc-poly/SKILL.md +6 -1
  41. package/templates/skills/orc-quick/SKILL.md +6 -1
  42. package/templates/skills/orc-retro/SKILL.md +6 -1
  43. package/templates/skills/orc-route/SKILL.md +6 -1
  44. package/templates/skills/orc-verify/SKILL.md +6 -1
  45. package/templates/skills/orc-wait/SKILL.md +163 -0
  46. package/templates/skills/orc-wiki/SKILL.md +6 -1
@@ -438,6 +438,65 @@ const CONTRACTS = [
438
438
  binFiles: ["bin/cli.js"],
439
439
  files: ["skills/_shared/extra-dispatch.md"],
440
440
  },
441
+ {
442
+ // v1.1.0 W1 — THE WAIT. A wait is a stop, and every stop in ORC writes its
443
+ // hand-back before it ends, because the thing that resumes the run may not
444
+ // be this session: the wake-up message is a Claude Code behaviour ORC
445
+ // cannot promise. Registered as the eighth member of the family with
446
+ // `a lane that answers its own interview question`, `a lane that picks its
447
+ // own favourite`, `a lane that fixes what it judged`, `a lane that picks
448
+ // its own council`, `a lane that reads its own document`, `a lane that
449
+ // sends work off Claude without saying so` and `a lane that re-does work
450
+ // the worktree already contains`.
451
+ //
452
+ // W3 adds every lane spine in WAIT_LANE_SHAPES to `files` — the token plus
453
+ // a pointer, never a forked copy of the prose.
454
+ name: "a wait is a stop, and a stop writes its hand-back (v1.1.0)",
455
+ token: "a lane that waits without a hand-back",
456
+ files: [
457
+ "commands/orc-wait.md",
458
+ "skills/_shared/wait.md",
459
+ "skills/orc-wait/SKILL.md",
460
+ // v1.1.0 W3 — EVERY lane in WAIT_LANE_SHAPES, in one release. A wait
461
+ // whose behaviour depends on which lane you are in is worse than no wait,
462
+ // so a half-rolled-out contract was never an option. /orc-ultra and
463
+ // /orc-plan are covered by skills/orc/SKILL.md — neither has a spine.
464
+ "skills/orc/SKILL.md",
465
+ "skills/orc-aftermath/SKILL.md",
466
+ "skills/orc-analyze/SKILL.md",
467
+ "skills/orc-boundary/SKILL.md",
468
+ "skills/orc-brainstorm/SKILL.md",
469
+ "skills/orc-budget/SKILL.md",
470
+ "skills/orc-challenge/SKILL.md",
471
+ "skills/orc-claude/SKILL.md",
472
+ "skills/orc-diy/SKILL.md",
473
+ "skills/orc-doc/SKILL.md",
474
+ "skills/orc-explain/SKILL.md",
475
+ "skills/orc-export/SKILL.md",
476
+ "skills/orc-fast/SKILL.md",
477
+ "skills/orc-grill/SKILL.md",
478
+ "skills/orc-learn/SKILL.md",
479
+ "skills/orc-mini/SKILL.md",
480
+ "skills/orc-pact/SKILL.md",
481
+ "skills/orc-pattern/SKILL.md",
482
+ "skills/orc-poly/SKILL.md",
483
+ "skills/orc-quick/SKILL.md",
484
+ "skills/orc-retro/SKILL.md",
485
+ "skills/orc-route/SKILL.md",
486
+ "skills/orc-verify/SKILL.md",
487
+ "skills/orc-wiki/SKILL.md",
488
+ ],
489
+ },
490
+ {
491
+ // v1.1.0 W1 — the lane table is CODE, not only prose. Same shape and same
492
+ // reason as the `orc extra` row below it: `WAIT_LANE_SHAPES` in bin/cli.js
493
+ // is the machine-readable copy, and a golden test in test/cli/wait.test.js
494
+ // compares the two IN BOTH DIRECTIONS.
495
+ name: "the wait lane table is CODE, not only prose (v1.1.0)",
496
+ token: "Which lanes support a wait",
497
+ binFiles: ["bin/cli.js"],
498
+ files: ["skills/_shared/wait.md"],
499
+ },
441
500
  {
442
501
  // v0.52.0 (D6) — WHICH LANES ROUTE FOREIGN. The table was prose in one
443
502
  // markdown file and nothing computed it, so the routing table could say
@@ -1295,6 +1354,9 @@ const CONTRACTS = [
1295
1354
  "commands/orc-brainstorm.md",
1296
1355
  "skills/_shared/README.md",
1297
1356
  "skills/_shared/lane-suspend.md",
1357
+ // v1.1.0: wait.md contrasts itself with BOTH leaving shapes in one table.
1358
+ // If a suspend's obligations change, that table is wrong.
1359
+ "skills/_shared/wait.md",
1298
1360
  "skills/orc-brainstorm/SKILL.md",
1299
1361
  "skills/orc-challenge/references/intake.md",
1300
1362
  "skills/orc-doc/SKILL.md",
@@ -1355,6 +1417,10 @@ const CONTRACTS = [
1355
1417
  // {run_dir}/{slug}/, and is deleted with the run. A move of one is a move
1356
1418
  // of the other.
1357
1419
  "skills/_shared/extra-dispatch.md",
1420
+ // v1.1.0 — a wait is a stop, so it owes the same hand-back. The whole
1421
+ // contract token `a lane that waits without a hand-back` rests on this.
1422
+ "skills/_shared/wait.md",
1423
+ "skills/orc-wait/SKILL.md",
1358
1424
  "skills/orc-challenge/SKILL.md",
1359
1425
  "skills/orc-challenge/examples/tsd-two-iterations.md",
1360
1426
  "skills/orc-challenge/references/fix-brief.md",
@@ -1425,6 +1491,9 @@ const CONTRACTS = [
1425
1491
  // v0.45.0: lane-suspend.md defines itself AGAINST this contract — leaving
1426
1492
  // and returning vs leaving for good. Naming the sibling is the point.
1427
1493
  "skills/_shared/lane-suspend.md",
1494
+ // v1.1.0: and wait.md against BOTH of them — a third shape, where nothing
1495
+ // runs at all.
1496
+ "skills/_shared/wait.md",
1428
1497
  ],
1429
1498
  },
1430
1499
  {
@@ -3506,6 +3575,11 @@ for (const b of BUDGETS) {
3506
3575
  "extra_resume_max",
3507
3576
  "extra_demote_after",
3508
3577
  "extra_demote_stale_min",
3578
+ // v1.1.0 — operating keys of the WAIT itself. A lane runs `orc wait plan`
3579
+ // and the CLI reads these two; no spine ever reads them, exactly as no
3580
+ // spine reads `extra_timeout_s`. An empty lanes[] here is an ANSWER.
3581
+ "wait_hop_minutes",
3582
+ "wait_max_hops",
3509
3583
  ]);
3510
3584
  for (const e of metaEntries) {
3511
3585
  if (!e.lanes) {