dorfl 0.14.1 → 0.14.3

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 (66) hide show
  1. package/dist/advance-ci-template.d.ts.map +1 -1
  2. package/dist/advance-ci-template.js +10 -4
  3. package/dist/advance-ci-template.js.map +1 -1
  4. package/dist/advance-lifecycle-template.d.ts.map +1 -1
  5. package/dist/advance-lifecycle-template.js +78 -25
  6. package/dist/advance-lifecycle-template.js.map +1 -1
  7. package/dist/cli.js +2 -2
  8. package/dist/close-job-template.d.ts +1 -1
  9. package/dist/close-job-template.d.ts.map +1 -1
  10. package/dist/close-job-template.js +17 -3
  11. package/dist/close-job-template.js.map +1 -1
  12. package/dist/install-ci-action-pins.d.ts +98 -0
  13. package/dist/install-ci-action-pins.d.ts.map +1 -0
  14. package/dist/install-ci-action-pins.js +165 -0
  15. package/dist/install-ci-action-pins.js.map +1 -0
  16. package/dist/install-ci-core.d.ts +84 -0
  17. package/dist/install-ci-core.d.ts.map +1 -1
  18. package/dist/install-ci-core.js +120 -14
  19. package/dist/install-ci-core.js.map +1 -1
  20. package/dist/install-ci-github.d.ts +15 -1
  21. package/dist/install-ci-github.d.ts.map +1 -1
  22. package/dist/install-ci-github.js +32 -0
  23. package/dist/install-ci-github.js.map +1 -1
  24. package/dist/install-ci.d.ts.map +1 -1
  25. package/dist/install-ci.js +21 -0
  26. package/dist/install-ci.js.map +1 -1
  27. package/dist/intake-trigger-template.d.ts.map +1 -1
  28. package/dist/intake-trigger-template.js +24 -7
  29. package/dist/intake-trigger-template.js.map +1 -1
  30. package/dist/intake.d.ts.map +1 -1
  31. package/dist/intake.js +10 -5
  32. package/dist/intake.js.map +1 -1
  33. package/dist/mint-adr.d.ts.map +1 -1
  34. package/dist/mint-adr.js +4 -1
  35. package/dist/mint-adr.js.map +1 -1
  36. package/dist/slug-namespace.d.ts +4 -3
  37. package/dist/slug-namespace.d.ts.map +1 -1
  38. package/dist/slug-namespace.js +28 -3
  39. package/dist/slug-namespace.js.map +1 -1
  40. package/dist/slug-safety.d.ts +55 -0
  41. package/dist/slug-safety.d.ts.map +1 -0
  42. package/dist/slug-safety.js +76 -0
  43. package/dist/slug-safety.js.map +1 -0
  44. package/dist/triage-persist.d.ts.map +1 -1
  45. package/dist/triage-persist.js +12 -3
  46. package/dist/triage-persist.js.map +1 -1
  47. package/dist/verify-workflow-template.d.ts +1 -1
  48. package/dist/verify-workflow-template.d.ts.map +1 -1
  49. package/dist/verify-workflow-template.js +16 -3
  50. package/dist/verify-workflow-template.js.map +1 -1
  51. package/package.json +3 -2
  52. package/src/advance-ci-template.ts +12 -4
  53. package/src/advance-lifecycle-template.ts +80 -25
  54. package/src/cli.ts +2 -2
  55. package/src/close-job-template.ts +17 -3
  56. package/src/install-ci-action-pins.ts +184 -0
  57. package/src/install-ci-core.ts +166 -14
  58. package/src/install-ci-github.ts +40 -1
  59. package/src/install-ci.ts +25 -0
  60. package/src/intake-trigger-template.ts +28 -7
  61. package/src/intake.ts +10 -5
  62. package/src/mint-adr.ts +4 -1
  63. package/src/slug-namespace.ts +33 -5
  64. package/src/slug-safety.ts +83 -0
  65. package/src/triage-persist.ts +13 -7
  66. package/src/verify-workflow-template.ts +16 -3
@@ -1 +1 @@
1
- {"version":3,"file":"mint-adr.js","sourceRoot":"","sources":["../src/mint-adr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,GAAG,EAAiB,MAAM,UAAU,CAAC;AAC7C,OAAO,EACN,oBAAoB,GAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,sBAAsB,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,SAAS,OAAO,CACf,IAAc,EACd,GAAW,EACX,GAAkC;IAElC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAkC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,iFAAiF;AACjF,SAAS,QAAQ,CAChB,GAAW,EACX,QAAgB,EAChB,GAAkC;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,YAAY,CACrB,qCAAqC,QAAQ,4CAA4C,CACzF,CAAC;IACH,CAAC;AACF,CAAC;AAED,0EAA0E;AAC1E,MAAM,OAAO,YAAa,SAAQ,KAAK;IACtC,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC5B,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAEtC,yEAAyE;AACzE,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,GAAG,WAAW,IAAI,IAAI,KAAK,CAAC;AACpC,CAAC;AAsED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAuB;IACpD,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExC,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO;YACN,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,YAAY,IAAI,wCAAwC;SACjE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC;IAC9D,MAAM,OAAO,GACZ,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAC7D,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC,CAAC,YAAY,CAAC;YACb,IAAI,EAAE,OAAO;YACb,KAAK;YACL,WAAW,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC;YACzC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;SAC9B,CAAC,CAAC;IAEN,4EAA4E;IAC5E,0EAA0E;IAC1E,iFAAiF;IACjF,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,OAAO,GAA+B,MAAM,oBAAoB,CAAC;QACtE,IAAI,EAAE,OAAO;QACb,OAAO;QACP,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QACpC,GAAG;QACH,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,EAAE;QACF,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG;QACH,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YACnC,CAAC,CAAC,EAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAC;YAClC,CAAC,CAAC,EAAE,CAAC;KACN,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GACZ,YAAY,IAAI,iBAAiB,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO;YAClE,eAAe,OAAO,CAAC,OAAO,2CAA2C;YACzE,qBAAqB,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;YAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO;SACP,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GACZ,UAAU,IAAI,cAAc,OAAO,+BAA+B;QAClE,+CAA+C,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,KAK5B;IACA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1B,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,YAAY,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACF,CAAC;IACF,CAAC;IACD,MAAM,IAAI,GAAa;QACtB,YAAY;QACZ,EAAE;QACF,OAAO,KAAK,EAAE;YACb,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,OAAO;QACV,EAAE;QACF,aAAa;QACb,EAAE;QACF,aAAa,CAAC,MAAM,GAAG,CAAC;YACvB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAC,yDAAyD;QAC5D,EAAE;QACF,QAAQ;QACR,EAAE;QACF,QAAQ,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,CAAC,CAAC,iLAAiL;QACpL,EAAE;KACF,CAAC;IACF,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO;QACN,KAAK;QACL,UAAU,KAAK,EAAE;QACjB,kBAAkB;QAClB,YAAY,IAAI,EAAE;QAClB,KAAK;QACL,EAAE;QACF,UAAU,KAAK,EAAE;QACjB,EAAE;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACxB,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,WAAmB;IACvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,OAAe;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,KAAK;SACV,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"mint-adr.js","sourceRoot":"","sources":["../src/mint-adr.ts"],"names":[],"mappings":"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"}
@@ -42,8 +42,8 @@ import { type LedgerReadStrategy } from './ledger-read.js';
42
42
  *
43
43
  * HARD CUTOVER (spec `prd-to-spec-vocabulary-cutover-and-migration-command`,
44
44
  * contract step): the legacy ''prd'' member is GONE — the parent-spec namespace
45
- * is `'spec'` only. A ''prd:<slug>'' arg no longer parses to a namespace (it falls
46
- * through to a bare literal slug), and a `work/prd-<slug>` branch ref no longer
45
+ * is `'spec'` only. A ''prd:<slug>'' arg no longer parses to a namespace (the
46
+ * resolvers refuse it by the safe-slug check: `:` is not a slug character), and a `work/prd-<slug>` branch ref no longer
47
47
  * parses. No back-compat alias (the clean-break stance).
48
48
  */
49
49
  export type SlugNamespace = 'task' | 'spec' | 'observation';
@@ -130,7 +130,8 @@ export declare class SlugResolutionError extends Error {
130
130
  * `spec:foo` → explicit spec, `foo` → bare (`explicit: undefined`). The prefix
131
131
  * match is case-sensitive and exact (`task:`/`spec:`); a slug like `tasked` is
132
132
  * NOT a prefix and stays bare. HARD CUTOVER: the legacy ''prd:'' prefix is not a
133
- * namespace prefix anymore — ''prd:foo'' stays a bare literal slug.
133
+ * namespace prefix anymore: ''prd:foo'' parses as a bare slug, which the
134
+ * resolvers then refuse by the safe-slug check (`:` is not a slug character).
134
135
  */
135
136
  export declare function parseSlugArg(arg: string): ParsedSlugArg;
136
137
  /** What the resolver needs to perform the existence checks. */
@@ -1 +1 @@
1
- {"version":3,"file":"slug-namespace.d.ts","sourceRoot":"","sources":["../src/slug-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAC5B,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAC,GAChC,MAAM,CAKR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,GAEZ;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GACnE,SAAS,CAmBX;AAED,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACb;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,EAAE,OAAO,CAAC;CAClB;AAmBD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAiBvD;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAChC,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC1B;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA4BjE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAkBvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkBtD"}
1
+ {"version":3,"file":"slug-namespace.d.ts","sourceRoot":"","sources":["../src/slug-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAGrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAC5B,SAAS,EAAE,aAAa,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAC,GAChC,MAAM,CAKR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,GAEZ;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GACnE,SAAS,CAmBX;AAED,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACb;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,QAAQ,EAAE,OAAO,CAAC;CAClB;AAmBD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAiBvD;AAyBD,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAChC,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC1B;AA0BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CA6BjE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAmBvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBtD"}
@@ -1,4 +1,5 @@
1
1
  import { ledgerRead } from './ledger-read.js';
2
+ import { isSafeSlug, MAX_SLUG_LENGTH } from './slug-safety.js';
2
3
  /**
3
4
  * The **ONE** construction of the work-BRANCH ref from the namespaced identity.
4
5
  * The branch ref is the last identity to join the `<type>-<slug>` scheme the
@@ -59,8 +60,8 @@ const TASK_PREFIX = 'task:';
59
60
  /**
60
61
  * The parent-spec namespace prefix: `spec:<slug>` → `{explicit: 'spec'}`. HARD
61
62
  * CUTOVER (spec `prd-to-spec-vocabulary-cutover-and-migration-command`): the
62
- * legacy ''prd:'' prefix is GONE — a ''prd:<slug>'' arg falls through to a bare
63
- * literal slug (no namespace), the clean-break stance.
63
+ * legacy ''prd:'' prefix is GONE: a ''prd:<slug>'' arg carries no namespace and
64
+ * is refused by the safe-slug check (`:` is not a slug character), the clean-break stance.
64
65
  */
65
66
  const SPEC_PREFIX = 'spec:';
66
67
  /**
@@ -87,7 +88,8 @@ export class SlugResolutionError extends Error {
87
88
  * `spec:foo` → explicit spec, `foo` → bare (`explicit: undefined`). The prefix
88
89
  * match is case-sensitive and exact (`task:`/`spec:`); a slug like `tasked` is
89
90
  * NOT a prefix and stays bare. HARD CUTOVER: the legacy ''prd:'' prefix is not a
90
- * namespace prefix anymore — ''prd:foo'' stays a bare literal slug.
91
+ * namespace prefix anymore: ''prd:foo'' parses as a bare slug, which the
92
+ * resolvers then refuse by the safe-slug check (`:` is not a slug character).
91
93
  */
92
94
  export function parseSlugArg(arg) {
93
95
  if (arg.startsWith(TASK_PREFIX)) {
@@ -107,6 +109,26 @@ export function parseSlugArg(arg) {
107
109
  }
108
110
  return { explicit: undefined, slug: arg };
109
111
  }
112
+ /**
113
+ * Refuse a slug outside the safe set ({@link isSafeSlug}) before any verb acts on
114
+ * it. Producers sanitise the slugs they mint, but a slug can also arrive from a
115
+ * hand-written frontmatter `slug:` or a file name, and every resolved slug goes
116
+ * on to name files, git refs and CI command lines. Loud, like every other
117
+ * resolution error: an unsafe item is never acted on, and the message says how
118
+ * to fix it.
119
+ */
120
+ function assertSafeSlug(arg, slug) {
121
+ if (!isSafeSlug(slug)) {
122
+ throw new SlugResolutionError(`'${arg}' does not name a usable slug: a slug must be 1-${MAX_SLUG_LENGTH} ` +
123
+ `letters, digits, '.', '_' or '-', start and end with a letter or digit, ` +
124
+ `and not contain '..'. Rename the item's file (and its frontmatter ` +
125
+ `\`slug:\`, if set) to a safe slug.` +
126
+ (slug.includes(':')
127
+ ? ` (The only namespace prefixes are \`task:\`, \`spec:\`, \`obs:\` ` +
128
+ `and \`observation:\`; a legacy prefix such as \`prd:\` is not one.)`
129
+ : ''));
130
+ }
131
+ }
110
132
  /** Does a TASK named `slug` exist (backlog or in-progress) in this repo? */
111
133
  function taskExists(read, repoPath, slug) {
112
134
  // The task side resolves THROUGH the existing read seam — its local-tree
@@ -138,6 +160,7 @@ function specExists(read, repoPath, slug) {
138
160
  export function resolveSlug(input) {
139
161
  const read = input.read ?? ledgerRead;
140
162
  const parsed = parseSlugArg(input.arg);
163
+ assertSafeSlug(input.arg, parsed.slug);
141
164
  if (parsed.explicit === 'observation') {
142
165
  // `do` spans the task/spec namespaces ONLY (build a task OR task a spec).
143
166
  // The `observation` namespace is `advance`'s alone (triage). Reject it here
@@ -183,6 +206,7 @@ export function resolveSlug(input) {
183
206
  export function resolveAdvanceArg(input) {
184
207
  const read = input.read ?? ledgerRead;
185
208
  const parsed = parseSlugArg(input.arg);
209
+ assertSafeSlug(input.arg, parsed.slug);
186
210
  if (parsed.explicit !== undefined) {
187
211
  // Explicit prefix (task / spec / observation): unambiguous by construction.
188
212
  return { namespace: parsed.explicit, slug: parsed.slug, explicit: true };
@@ -213,6 +237,7 @@ export function resolveAdvanceArg(input) {
213
237
  */
214
238
  export function resolveTaskOnlyArg(arg) {
215
239
  const parsed = parseSlugArg(arg);
240
+ assertSafeSlug(arg, parsed.slug);
216
241
  if (parsed.explicit === 'spec') {
217
242
  throw new SlugResolutionError(`this command operates on tasks, not specs — '${arg}' names a spec. ` +
218
243
  `Drop the \`spec:\` prefix to act on the task, or use \`do ${arg}\` ` +
@@ -1 +1 @@
1
- {"version":3,"file":"slug-namespace.js","sourceRoot":"","sources":["../src/slug-namespace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slug-namespace.js","sourceRoot":"","sources":["../src/slug-namespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The SAFE-SLUG character set, and the one sanitiser every slug-producing path
3
+ * shares.
4
+ *
5
+ * A slug is not just a label: it becomes a file name (`work/<folder>/<slug>.md`),
6
+ * part of a git ref (`work/<slug>`, `work/intake-task-<slug>`), a command-line
7
+ * argument (`dorfl advance "task:<slug>"`, one per CI matrix leg) and text in
8
+ * commit messages. Several producers draft slugs from content an outsider can
9
+ * influence: `intake` from an issue's title and thread, the triage and apply
10
+ * rungs from an agent verdict. Before this module the only transform was
11
+ * `paramCase`, which keeps `$(`, backticks, quotes, `;`, `|` and `/`, and the
12
+ * triage/ADR paths only `trim()`med, so a drafted `../x` escaped its folder.
13
+ *
14
+ * Two functions, two jobs:
15
+ *
16
+ * - {@link toSafeSlug} is for PRODUCERS: it turns any drafted text into a slug
17
+ * made only of ASCII letters, digits and single hyphens. Its output always
18
+ * passes {@link isSafeSlug}.
19
+ * - {@link isSafeSlug} is for CONSUMERS: the slug resolvers refuse any slug
20
+ * outside the safe set, which covers slugs no producer here minted (a
21
+ * frontmatter `slug:` a human or agent wrote by hand). It is deliberately a
22
+ * little wider than what {@link toSafeSlug} emits (it also allows `.` and
23
+ * `_` and mixed case) so every slug already in use in a real `work/` tree
24
+ * keeps resolving: those characters are inert in a file name, a ref and a
25
+ * quoted shell word. `..` is still refused (path traversal), as is a leading
26
+ * `-` (it would read as a command-line option) or `.` (a hidden file), and so
27
+ * is a `.lock` suffix (git refuses it in a ref component).
28
+ */
29
+ /**
30
+ * The longest slug either function accepts. Real slugs in this repo top out
31
+ * around 105 characters; 120 leaves room without letting a drafted essay become
32
+ * a file name or ref component.
33
+ */
34
+ export declare const MAX_SLUG_LENGTH = 120;
35
+ /**
36
+ * Whether `slug` is safe to use as a file name, a git ref component and a
37
+ * command-line argument (see the module doc for the exact set).
38
+ */
39
+ export declare function isSafeSlug(slug: string): boolean;
40
+ /**
41
+ * Turn drafted text into a safe slug: accents are folded to their base letter,
42
+ * every run of anything other than an ASCII letter or digit becomes ONE hyphen,
43
+ * leading/trailing hyphens are dropped, and the result is capped at
44
+ * {@link MAX_SLUG_LENGTH}. Case is preserved (callers that want lower case, like
45
+ * `intake`, `paramCase` first). Returns `''` when nothing usable is left, so the
46
+ * caller's existing "no slug to derive" refusal fires instead of a junk name.
47
+ */
48
+ export declare function toSafeSlug(input: string): string;
49
+ /**
50
+ * Keep a slug that is already safe EXACTLY as it is, and sanitise one that is
51
+ * not. The producers use this so every input that worked before still yields
52
+ * the same slug, and only an unsafe one changes.
53
+ */
54
+ export declare function ensureSafeSlug(input: string): string;
55
+ //# sourceMappingURL=slug-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-safety.d.ts","sourceRoot":"","sources":["../src/slug-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAQnC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQhD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * The SAFE-SLUG character set, and the one sanitiser every slug-producing path
3
+ * shares.
4
+ *
5
+ * A slug is not just a label: it becomes a file name (`work/<folder>/<slug>.md`),
6
+ * part of a git ref (`work/<slug>`, `work/intake-task-<slug>`), a command-line
7
+ * argument (`dorfl advance "task:<slug>"`, one per CI matrix leg) and text in
8
+ * commit messages. Several producers draft slugs from content an outsider can
9
+ * influence: `intake` from an issue's title and thread, the triage and apply
10
+ * rungs from an agent verdict. Before this module the only transform was
11
+ * `paramCase`, which keeps `$(`, backticks, quotes, `;`, `|` and `/`, and the
12
+ * triage/ADR paths only `trim()`med, so a drafted `../x` escaped its folder.
13
+ *
14
+ * Two functions, two jobs:
15
+ *
16
+ * - {@link toSafeSlug} is for PRODUCERS: it turns any drafted text into a slug
17
+ * made only of ASCII letters, digits and single hyphens. Its output always
18
+ * passes {@link isSafeSlug}.
19
+ * - {@link isSafeSlug} is for CONSUMERS: the slug resolvers refuse any slug
20
+ * outside the safe set, which covers slugs no producer here minted (a
21
+ * frontmatter `slug:` a human or agent wrote by hand). It is deliberately a
22
+ * little wider than what {@link toSafeSlug} emits (it also allows `.` and
23
+ * `_` and mixed case) so every slug already in use in a real `work/` tree
24
+ * keeps resolving: those characters are inert in a file name, a ref and a
25
+ * quoted shell word. `..` is still refused (path traversal), as is a leading
26
+ * `-` (it would read as a command-line option) or `.` (a hidden file), and so
27
+ * is a `.lock` suffix (git refuses it in a ref component).
28
+ */
29
+ /**
30
+ * The longest slug either function accepts. Real slugs in this repo top out
31
+ * around 105 characters; 120 leaves room without letting a drafted essay become
32
+ * a file name or ref component.
33
+ */
34
+ export const MAX_SLUG_LENGTH = 120;
35
+ /** Letters, digits, `.`, `_`, `-`; starts and ends with a letter or digit. */
36
+ const SAFE_SLUG_RE = /^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/;
37
+ /** Git refuses a ref component ending in `.lock` (its lock-file suffix). */
38
+ const GIT_LOCK_SUFFIX_RE = /\.lock$/i;
39
+ /**
40
+ * Whether `slug` is safe to use as a file name, a git ref component and a
41
+ * command-line argument (see the module doc for the exact set).
42
+ */
43
+ export function isSafeSlug(slug) {
44
+ return (slug.length > 0 &&
45
+ slug.length <= MAX_SLUG_LENGTH &&
46
+ SAFE_SLUG_RE.test(slug) &&
47
+ !slug.includes('..') &&
48
+ !GIT_LOCK_SUFFIX_RE.test(slug));
49
+ }
50
+ /**
51
+ * Turn drafted text into a safe slug: accents are folded to their base letter,
52
+ * every run of anything other than an ASCII letter or digit becomes ONE hyphen,
53
+ * leading/trailing hyphens are dropped, and the result is capped at
54
+ * {@link MAX_SLUG_LENGTH}. Case is preserved (callers that want lower case, like
55
+ * `intake`, `paramCase` first). Returns `''` when nothing usable is left, so the
56
+ * caller's existing "no slug to derive" refusal fires instead of a junk name.
57
+ */
58
+ export function toSafeSlug(input) {
59
+ return input
60
+ .normalize('NFKD')
61
+ .replace(/[\u0300-\u036f]/g, '')
62
+ .replace(/[^A-Za-z0-9]+/g, '-')
63
+ .replace(/^-+|-+$/g, '')
64
+ .slice(0, MAX_SLUG_LENGTH)
65
+ .replace(/-+$/, '');
66
+ }
67
+ /**
68
+ * Keep a slug that is already safe EXACTLY as it is, and sanitise one that is
69
+ * not. The producers use this so every input that worked before still yields
70
+ * the same slug, and only an unsafe one changes.
71
+ */
72
+ export function ensureSafeSlug(input) {
73
+ const trimmed = input.trim();
74
+ return isSafeSlug(trimmed) ? trimmed : toSafeSlug(trimmed);
75
+ }
76
+ //# sourceMappingURL=slug-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug-safety.js","sourceRoot":"","sources":["../src/slug-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,8EAA8E;AAC9E,MAAM,YAAY,GAAG,8CAA8C,CAAC;AAEpE,4EAA4E;AAC5E,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,CACN,IAAI,CAAC,MAAM,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,IAAI,eAAe;QAC9B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO,KAAK;SACV,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC;SACzB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"triage-persist.d.ts","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triage-persist.d.ts","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { createItemThroughCas, } from './advancing-lock.js';
6
6
  import { resolveSidecarIdentity, sidecarPathFor } from './sidecar.js';
7
7
  import { renderTaskBody, renderSpecBody } from './buildable-body.js';
8
8
  import { setFrontmatterMarker } from './frontmatter.js';
9
+ import { ensureSafeSlug } from './slug-safety.js';
9
10
  /**
10
11
  * The engine-owned TRIAGE PERSIST (spec `advance-loop`, task `advance-rung-triage`,
11
12
  * US #16/17/24/30) — the half of the observation-triage rung the ENGINE owns (the
@@ -232,7 +233,9 @@ export async function promoteObservation(options) {
232
233
  const { cwd, item, itemPath, env } = options;
233
234
  const note = options.note ?? (() => { });
234
235
  const { slug: obsSlug } = resolveSidecarIdentity(item);
235
- const newSlug = (options.newSlug ?? obsSlug).trim();
236
+ // The drafted slug comes from an agent verdict: an unsafe one (a `/`, `..`,
237
+ // shell metacharacters) is sanitised, a safe one is kept exactly as drafted.
238
+ const newSlug = ensureSafeSlug(options.newSlug ?? obsSlug);
236
239
  const artifact = options.artifact ?? 'task';
237
240
  if (newSlug === '') {
238
241
  return {
@@ -256,8 +259,14 @@ export async function promoteObservation(options) {
256
259
  // review-nits back-pointer); this is the triage-promote lineage. Matching on this
257
260
  // explicit field — not the slug — is what keeps an unrelated same-slug task from
258
261
  // false-positiving into a benign skip.
259
- const content = setFrontmatterMarker(ensureTaskDispatchable(artifact, newSlug, options.stubContent ??
260
- buildPromotedBody(artifact, newSlug, readItem(cwd, itemPath, env))), 'promotedFrom', item);
262
+ // A drafted `stubContent` carries its own frontmatter, and the ledger reads
263
+ // `slug:` before the file name, so stamp the SAFE slug over whatever the
264
+ // draft said: otherwise a drafted `slug: ../x` would become the item's
265
+ // identity even though the file name was sanitised.
266
+ const drafted = options.stubContent !== undefined
267
+ ? setFrontmatterMarker(options.stubContent, 'slug', newSlug)
268
+ : buildPromotedBody(artifact, newSlug, readItem(cwd, itemPath, env));
269
+ const content = setFrontmatterMarker(ensureTaskDispatchable(artifact, newSlug, drafted), 'promotedFrom', item);
261
270
  // The note + its answered sidecar `git rm` IN THE SAME create commit (promote =
262
271
  // ONE atomic commit). A CAS LOSER never reaches the commit, so it leaves both
263
272
  // INTACT for a retry (today's loser-backs-off guarantee, now over deletion).
@@ -1 +1 @@
1
- {"version":3,"file":"triage-persist.js","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triage-persist.js","sourceRoot":"","sources":["../src/triage-persist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AACpD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,GAAG,EAAiB,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EACN,oBAAoB,GAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,sBAAsB,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,SAAS,OAAO,CACf,IAAc,EACd,GAAW,EACX,GAAkC;IAElC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,OAAO,CACf,IAAc,EACd,GAAW,EACX,GAAkC;IAElC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,kBAAkB,CAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAC/E,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAkC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,iFAAiF;AACjF,SAAS,QAAQ,CAChB,GAAW,EACX,QAAgB,EAChB,GAAkC;IAElC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,kBAAkB,CAC3B,qCAAqC,QAAQ,yCAAyC,CACtF,CAAC;IACH,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC5C,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAClC,CAAC;CACD;AA8BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CACjC,OAAkC;IAElC,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACtB,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,UAAU,IAAI,6BAA6B,KAAK,qBAAqB,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO,EAAC,OAAO,EAAC,CAAC;IAClB,CAAC;IACD,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,mBAAmB,IAAI,kBAAkB,EAAE,GAAG,CAAC;IAC/D,OAAO,CACN;QACC,QAAQ;QACR,SAAS;QACT,IAAI;QACJ,OAAO;QACP,IAAI;QACJ,YAAY,KAAK,OAAO,MAAM,EAAE;KAChC,EACD,GAAG,EACH,GAAG,CACH,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,OAAO,GACZ,UAAU,IAAI,0BAA0B,KAAK,yBAAyB;QACtE,2EAA2E;QAC3E,0DAA0D,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC;AAC1B,CAAC;AA8CD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,0BAA0B,CACzC,OAA+B;IAE/B,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,kBAAkB,CAAC,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7C,kFAAkF;IAClF,iFAAiF;IACjF,mFAAmF;IACnF,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,YAAY,GACjB,IAAI,KAAK,WAAW;QACnB,CAAC,CAAC,yBAAyB,QAAQ,qDAAqD;QACxF,CAAC,CAAC,6BAA6B,QAAQ,+DAA+D,CAAC;IACzG,MAAM,OAAO,GAAG,mBAAmB,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG,CAAC;IAC/D,MAAM,WAAW,GAChB,2BAA2B,YAAY,gCAAgC;QACvE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,OAAO,GACZ,gBAAgB,IAAI,MAAM,IAAI,OAAO,QAAQ,0BAA0B;QACvE,8FAA8F,CAAC;IAChG,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC;AACxD,CAAC;AAkFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,OAAkC;IAElC,MAAM,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAExC,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACrD,4EAA4E;IAC5E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC5C,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO;YACN,OAAO,EAAE,aAAa;YACtB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,WAAW,IAAI,qCAAqC,QAAQ,EAAE;SACvE,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,mFAAmF;IACnF,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,WAAW,GAAG,WAAW,CAC9B,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,EACtD,GAAG,OAAO,KAAK,CACf,CAAC;IACF,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,mFAAmF;IACnF,iFAAiF;IACjF,gFAAgF;IAChF,kFAAkF;IAClF,mFAAmF;IACnF,gFAAgF;IAChF,kFAAkF;IAClF,iFAAiF;IACjF,uCAAuC;IACvC,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,oDAAoD;IACpD,MAAM,OAAO,GACZ,OAAO,CAAC,WAAW,KAAK,SAAS;QAChC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC;QAC5D,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,oBAAoB,CACnC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAClD,cAAc,EACd,IAAI,CACJ,CAAC;IAEF,gFAAgF;IAChF,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,2EAA2E;IAC3E,8CAA8C;IAC9C,MAAM,OAAO,GAA+B,MAAM,oBAAoB,CAAC;QACtE,IAAI,EAAE,WAAW;QACjB,OAAO;QACP,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;QACpC,yEAAyE;QACzE,+EAA+E;QAC/E,sEAAsE;QACtE,UAAU,EAAE,IAAI;QAChB,GAAG;QACH,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,EAAE;QACF,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG;QACH,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YACnC,CAAC,CAAC,EAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAC;YAClC,CAAC,CAAC,EAAE,CAAC;KACN,CAAC,CAAC;IACH,4EAA4E;IAC5E,iFAAiF;IACjF,mFAAmF;IACnF,wEAAwE;IACxE,0EAA0E;IAC1E,IAAI,OAAO,CAAC,OAAO,KAAK,4BAA4B,EAAE,CAAC;QACtD,MAAM,OAAO,GACZ,WAAW,IAAI,KAAK,WAAW,4CAA4C;YAC3E,mBAAmB,OAAO,CAAC,OAAO,6CAA6C,CAAC;QACjF,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO;YACN,OAAO,EAAE,iBAAiB;YAC1B,QAAQ,EAAE,CAAC;YACX,WAAW;YACX,OAAO;SACP,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GACZ,WAAW,IAAI,kBAAkB,WAAW,IAAI,OAAO,CAAC,OAAO,OAAO;YACtE,eAAe,OAAO,CAAC,OAAO,2CAA2C;YACzE,qBAAqB,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;YAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO;SACP,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GACZ,YAAY,IAAI,cAAc,WAAW,+BAA+B;QACxE,+CAA+C,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,CAAC;IACd,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;;;;;;;;;;;;;GAaG;AACH,SAAS,sBAAsB,CAC9B,QAAyB,EACzB,IAAY,EACZ,IAAY;IAEZ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,iFAAiF;IACjF,oDAAoD;IACpD,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,+DAA+D;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,mBAAmB,IAAI,qBAAqB,CAAC;IAC1D,MAAM,WAAW,GAAG,kBAAkB,IAAI,IAAI,CAAC;IAC/C,OAAO,GAAG,OAAO,OAAO,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CACzB,QAAyB,EACzB,IAAY,EACZ,WAAmB;IAEnB,MAAM,EAAC,SAAS,EAAE,aAAa,EAAC,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACjD,MAAM,WAAW,GAAa;QAC7B,KAAK;QACL,UAAU,IAAI,EAAE;QAChB,SAAS,IAAI,EAAE;QACf,iBAAiB,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;QAClD,iFAAiF;QACjF,eAAe;QACf,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACjD,KAAK;KACL,CAAC;IACF,2EAA2E;IAC3E,kFAAkF;IAClF,+EAA+E;IAC/E,8EAA8E;IAC9E,gFAAgF;IAChF,wEAAwE;IACxE,wFAAwF;IACxF,+EAA+E;IAC/E,iEAAiE;IACjE,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACpD,+EAA+E;IAC/E,+CAA+C;IAC/C,+EAA+E;IAC/E,iEAAiE;IACjE,2CAA2C;IAC3C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,OAAO,CACN,WAAW;YACX,cAAc,CAAC;gBACd,gBAAgB,EAAE,SAAS;gBAC3B,aAAa;aACb,CAAC,CACF,CAAC;IACH,CAAC;IACD,gFAAgF;IAChF,gFAAgF;IAChF,8EAA8E;IAC9E,6EAA6E;IAC7E,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,UAAU,GACf,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QACtB,CAAC,CAAC,mBAAmB,IAAI,qBAAqB;QAC9C,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,CACN,WAAW;QACX,cAAc,CAAC;YACd,WAAW,EAAE,SAAS;YACtB,aAAa;YACb,MAAM,EAAE,UAAU;SAClB,CAAC,CACF,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,WAAmB;IAIhD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,wDAAwD;IACxD,qEAAqE;IACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,EAAC,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAC,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,CAAC,CAAC;YACX,MAAM;QACP,CAAC;IACF,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,CAAC;AACnC,CAAC;AAED,2EAA2E;AAC3E,SAAS,gBAAgB,CAAC,OAAe;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,KAAK;SACV,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;SAClB,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC"}
@@ -40,7 +40,7 @@ export declare const VERIFY_WORKFLOW_PATH = "workflows/verify.yml";
40
40
  * so the GitHub check it produces matches the required-status `context` install-ci
41
41
  * configures on `main` — by construction, not by hand-typed agreement.
42
42
  */
43
- export declare function generateVerifyWorkflow(_config: ResolvedCIConfig): string;
43
+ export declare function generateVerifyWorkflow(config: ResolvedCIConfig): string;
44
44
  /** A single structural problem found in the generated verify workflow. */
45
45
  export interface VerifyWorkflowProblem {
46
46
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"verify-workflow-template.d.ts","sourceRoot":"","sources":["../src/verify-workflow-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,oJAC8G,CAAC;AAEnJ,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA4DxE;AAED,0EAA0E;AAC1E,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CA8B7E"}
1
+ {"version":3,"file":"verify-workflow-template.d.ts","sourceRoot":"","sources":["../src/verify-workflow-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,oJAC8G,CAAC;AAEnJ,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAuEvE;AAED,0EAA0E;AAC1E,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,wBAAwB;IACxC,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CA8B7E"}
@@ -20,6 +20,8 @@
20
20
  * (GitHub Merge Queue) can flip the ruleset on without changing this workflow's
21
21
  * trigger surface — the forward seam the spec's Applied Answers q3 names.
22
22
  */
23
+ import { ACTION_PINS, pinnedUses } from './install-ci-action-pins.js';
24
+ import { shouldDropCheckoutCredentials } from './install-ci-core.js';
23
25
  /**
24
26
  * The required-status-check CONTEXT install-ci sets via branch protection AND the
25
27
  * job/check name the emitted verify workflow produces. ONE source of truth so
@@ -39,7 +41,18 @@ export const VERIFY_WORKFLOW_PATH = 'workflows/verify.yml';
39
41
  * so the GitHub check it produces matches the required-status `context` install-ci
40
42
  * configures on `main` — by construction, not by hand-typed agreement.
41
43
  */
42
- export function generateVerifyWorkflow(_config) {
44
+ export function generateVerifyWorkflow(config) {
45
+ // `persist-credentials: false` ONLY on a repo KNOWN to be public (see
46
+ // {@link shouldDropCheckoutCredentials}): this job has `contents: read`, so
47
+ // the persisted token can only ever read, and on a public repo reads need
48
+ // no token. Unknown / private / internal ⇒ today's checkout, unchanged.
49
+ const checkoutCredentials = shouldDropCheckoutCredentials(config)
50
+ ? `
51
+ # Public repository: every git read works without a token, and this
52
+ # job cannot push, so do not leave the token in .git/config for later
53
+ # steps (the project-setup hook's installs, the gate) to read.
54
+ persist-credentials: false`
55
+ : '';
43
56
  return `\
44
57
  # dorfl — the VERIFY workflow (Tier-1 GitHub ceiling; spec
45
58
  # land-time-reverify-and-parallel-merge-ceiling, task
@@ -92,9 +105,9 @@ jobs:
92
105
  ${VERIFY_CHECK_CONTEXT}:
93
106
  runs-on: ubuntu-latest
94
107
  steps:
95
- - uses: actions/checkout@v5
108
+ - uses: ${pinnedUses(ACTION_PINS.checkout)}
96
109
  with:
97
- fetch-depth: 0
110
+ fetch-depth: 0${checkoutCredentials}
98
111
  - uses: ./.github/actions/dorfl-setup
99
112
  - name: run the repo verify gate
100
113
  run: dorfl verify
@@ -1 +1 @@
1
- {"version":3,"file":"verify-workflow-template.js","sourceRoot":"","sources":["../src/verify-workflow-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GACnC,iJAAiJ,CAAC;AAEnJ,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAyB;IAC/D,OAAO;;;;;;kEAM0D,oBAAoB;;4DAE1B,oBAAoB;yEACP,oBAAoB;;;;;;;;gDAQ7C,oBAAoB;;;;;;;;;;QAU5D,oBAAoB;;;;;;;;;;;WAWjB,oBAAoB;;;;;;;;;SAStB,oBAAoB;;IAEzB,oBAAoB;;;;;;;;;CASvB,CAAC;AACF,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IAClD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAE,OAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,CAAC,0BAA0B,EAAE,IAAI,MAAM,CAC7C,UAAU,oBAAoB,QAAQ,EACtC,GAAG,CACH,CAAC,IAAI,CACL,SAAS,CACT,EAAE,mDAAmD,oBAAoB,KAAK;QAC9E,6DAA6D,CAAC,CAAC;IAChE,OAAO,CAAC,sBAAsB,EAAE,oCAAoC,CAAC,IAAI,CACxE,SAAS,CACT,EAAE,kEAAkE,CAAC,CAAC;IACvE,OAAO,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,IAAI,CAC3D,SAAS,CACT,EAAE,oFAAoF,CAAC,CAAC;IACzF,OAAO,CAAC,yBAAyB,EAAE,CAAC,2BAA2B,CAAC,IAAI,CACnE,SAAS,CACT,EAAE,iDAAiD,CAAC,CAAC;IACtD,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,IAAI,CACjD,SAAS,CACT,EAAE,mFAAmF,CAAC,CAAC;IACxF,OAAO,EAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"verify-workflow-template.js","sourceRoot":"","sources":["../src/verify-workflow-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAC,6BAA6B,EAAC,MAAM,sBAAsB,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAE7C,yDAAyD;AACzD,MAAM,CAAC,MAAM,uBAAuB,GACnC,iJAAiJ,CAAC;AAEnJ,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC9D,sEAAsE;IACtE,4EAA4E;IAC5E,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC;;;;qCAIiC;QACnC,CAAC,CAAC,EAAE,CAAC;IACN,OAAO;;;;;;kEAM0D,oBAAoB;;4DAE1B,oBAAoB;yEACP,oBAAoB;;;;;;;;gDAQ7C,oBAAoB;;;;;;;;;;QAU5D,oBAAoB;;;;;;;;;;;WAWjB,oBAAoB;;;;;;;;;SAStB,oBAAoB;;IAEzB,oBAAoB;;;gBAGR,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC;;0BAEtB,mBAAmB;;;;CAI5C,CAAC;AACF,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IAClD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAE,OAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,CAAC,0BAA0B,EAAE,IAAI,MAAM,CAC7C,UAAU,oBAAoB,QAAQ,EACtC,GAAG,CACH,CAAC,IAAI,CACL,SAAS,CACT,EAAE,mDAAmD,oBAAoB,KAAK;QAC9E,6DAA6D,CAAC,CAAC;IAChE,OAAO,CAAC,sBAAsB,EAAE,oCAAoC,CAAC,IAAI,CACxE,SAAS,CACT,EAAE,kEAAkE,CAAC,CAAC;IACvE,OAAO,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,IAAI,CAC3D,SAAS,CACT,EAAE,oFAAoF,CAAC,CAAC;IACzF,OAAO,CAAC,yBAAyB,EAAE,CAAC,2BAA2B,CAAC,IAAI,CACnE,SAAS,CACT,EAAE,iDAAiD,CAAC,CAAC;IACtD,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,IAAI,CACjD,SAAS,CACT,EAAE,mFAAmF,CAAC,CAAC;IACxF,OAAO,EAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAC,CAAC;AAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dorfl",
3
- "version": "0.14.1",
3
+ "version": "0.14.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/wighawag/dorfl.git",
@@ -36,7 +36,8 @@
36
36
  "as-soon": "^0.1.5",
37
37
  "tsx": "^4.21.0",
38
38
  "typescript": "^5.3.3",
39
- "vitest": "^4.0.18"
39
+ "vitest": "^4.0.18",
40
+ "yaml": "^2.9.1"
40
41
  },
41
42
  "scripts": {
42
43
  "build": "tsc && node scripts/vendor-protocol.mjs && node scripts/vendor-skills.mjs",
@@ -147,15 +147,23 @@ export function validateAdvanceCiTemplate(
147
147
  '+ `cwd.repo.specs[]` pools), so a ready ungated SPEC becomes one auto-task ' +
148
148
  'matrix leg alongside the eligible-task legs ' +
149
149
  '(`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`).');
150
- require('propose-one-advance-per-item', /dorfl advance "?\$\{\{\s*matrix\./.test(
150
+ require('propose-one-advance-per-item', /WORK_ITEM:\s*\$\{\{\s*matrix\.item\s*\}\}[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"/.test(
151
151
  text,
152
152
  ), 'each matrix leg must run one `dorfl advance <matrix item>` ' +
153
- '(one PR per item).');
153
+ '(one PR per item), reading the item from the step env (`WORK_ITEM`).');
154
+ // The item id is a slug that may be hand-written, so it must reach the shell
155
+ // as DATA through `env:`, never as `${{ }}` text spliced into the `run:` script
156
+ // (GitHub Actions script injection).
157
+ require('matrix-item-not-spliced-into-run', !/dorfl advance "?\$\{\{/.test(
158
+ text,
159
+ ), 'the matrix item must NOT be interpolated into the `run:` script as ' +
160
+ '`${{ matrix.item }}` (script injection): pass it through the step `env:` ' +
161
+ 'as `WORK_ITEM` and quote it as `"${WORK_ITEM}"`.');
154
162
  // The matrix leg must carry `--propose` so the integration mode is TIED to the
155
163
  // matrix shape (it cannot desync from the dispatch `integrationMode` input nor
156
164
  // fall back to a repo config default of `merge`). Scoped to the `advance-propose`
157
165
  // job so it is the LEG that carries it, not merely the file somewhere.
158
- require('propose-leg-carries-propose-flag', /advance-propose:[\s\S]*?dorfl advance "?\$\{\{\s*matrix\.[\s\S]*?--propose\b/.test(
166
+ require('propose-leg-carries-propose-flag', /advance-propose:[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"[^\n]*--propose\b/.test(
159
167
  text,
160
168
  ), 'each `propose` matrix leg must pass `--propose` so the integration mode is ' +
161
169
  'TIED to the matrix shape (a leg can never merge to main / desync from the ' +
@@ -176,7 +184,7 @@ export function validateAdvanceCiTemplate(
176
184
  // scoped to the `advance-merge:` job so the `--merge` flag is TIED to its leg
177
185
  // (cannot desync from the dispatch `integrationMode` input nor fall back to a
178
186
  // repo config default of `propose`).
179
- require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "?\$\{\{\s*matrix\.[\s\S]*?--merge\b/.test(
187
+ require('merge-leg-carries-merge-flag', /advance-merge:[\s\S]*?dorfl advance "\$\{WORK_ITEM\}"[^\n]*--merge\b/.test(
180
188
  text,
181
189
  ), 'each `merge` matrix leg must pass `--merge` so the integration mode is ' +
182
190
  'TIED to the matrix shape (a leg can never propose-only / desync from the ' +