autonomous-sdlc-harness 0.6.1 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7G,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAmB,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqIxC,uDAAuD;AACvD,MAAM,aAAa,GAA8C;IAC/D,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,UAAU;CACrC,CAAC;AAEF,2DAA2D;AAC3D,MAAM,mBAAmB,GAA8C;IACrE,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,aAAa;IACrB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,cAAc;IACvB,wBAAwB,EAAE,eAAe;CAC1C,CAAC;AAoBF,oFAAoF;AACpF,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAsC,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACjF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAsC,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACjF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,aAAa,CAAC,OAAwB;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAC/F,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,gEAAgE;AAChE,SAAS,eAAe,CAAC,OAAwB;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzD,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,yCAAyC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,eAAe,CAAC,QAAiC,EAAE,GAAiB;IAC3E,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,2CAA2C,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,+BAA+B,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,0CAA0C,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACpC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,gCAAgC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,mCAAmC,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;gBAAE,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,+BAA+B,CAAC,CAAC;QACrG,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;YAAE,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACrC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAAE,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,kCAAkC,CAAC,CAAC;YAC5G,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,KAAK,EAAE,EAAE,CAAC;gBACpE,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,6DAA6D,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,QAAQ,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;gBAAE,SAAS;YAC3E,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,kDAAkD,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,SAAS,CAAC,OAAwB,EAAE,GAAiB;IAC5D,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,YAAY;YACf,oFAAoF;YACpF,yEAAyE;YACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAExC,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;YAC5D,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACjF,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,KAAK,QAAQ,CAAC;YACrG,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACjD,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,IAAI,MAAM,CAAC;YACzC,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC5D,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,0CAA0C,UAAU,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;QACjG,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5F,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjF,MAAM,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,oDAAoD,CAAC,CAAC;YAChH,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAe,CAAC;YACvD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;QACxE,CAAC;QAED,KAAK,aAAa;YAChB,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,cAAc,CAAC,OAAwB;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,WAAqB,CAAC;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpG,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE7D,uFAAuF;IACvF,2EAA2E;IAC3E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAEpE,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACtF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,eAAe,CACtB,KAAe,EACf,WAAmB,EACnB,MAAyB,EACzB,OAA4B;IAE5B,IAAI,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;IAC/B,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAK,KAAK,CAAC,QAAQ,CAAY,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,QAAQ,IAAI,CAAC,CAAC;IAE3F,IAAI,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,CAAC;YACZ,QAAQ,IAAI,CAAC,CAAC;YACd,SAAS;QACX,CAAC;QACD,KAAK,IAAI,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YACnD,IAAK,KAAK,CAAC,IAAI,CAAY,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC5C,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CAAC,OAAqB;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO;IAEtC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAErF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,MAAM,wBAAwB,CAAC,CAAC;IACpG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,0FAA0F;AAC1F,SAAS,YAAY,CAAC,MAAmB,EAAE,KAAwB;IACjE,MAAM,IAAI,GAAG,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,oGAAoG;AACpG,SAAS,YAAY,CAAC,OAAqB;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,gBAAgB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAY,EAAE,CAAC;IAC7G,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAS;IACX,SAAS,GAAmB,EAAE,CAAC;IAExC,2DAA2D;IAC3D,GAAG,CAAC,OAAqB;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+EAA+E;IAC/E,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAiB;QACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YAEpC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;gBAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;gBACzB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;aAC5C,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;gBAC1B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;gBACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;gBAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;gBAC9C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aAC5E,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,IAAY;IACxD,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,iBAAiB,MAAM,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,+CAA+C,KAAK,MAAM,MAAM,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/core/writer.ts"],"names":[],"mappings":"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"}
@@ -108,7 +108,7 @@ import { FORCED_SIGNAL_ID } from '../detect/signals.js';
108
108
  import { CLAUDE_MD_PATH, SETUP_PENDING_CLOSE, SETUP_PENDING_OPEN, SKELETON_GUIDANCE_MARKER, TASK_OFFER_PATH, UNFILLED_STUB_MARKER, } from '../generators/claudeContext.js';
109
109
  import { caseLabelMatches, isGlobPattern, PRE_PUSH_HOOK, readProtectedCaseLabel, resolveGithooksDir, resolveProtectedBranches, } from '../generators/githooks.js';
110
110
  import { PUSH_CMD_KEY, PUSH_DESTINATION_PLACEHOLDER, PUSH_URL_KEY, pushEnvCandidates, } from '../generators/notifications.js';
111
- import { IN_FLIGHT_RUNS_NOTE, pinnedCliCommand, upgradeWorkflowsCommand } from '../generators/githubWorkflows.js';
111
+ import { IN_FLIGHT_RUNS_NOTE, pinnedCliCommand, unparseableControlRoute, upgradeWorkflowsCommand } from '../generators/githubWorkflows.js';
112
112
  import { DOCS_SEARCH_SERVER_SCRIPT_NAME, outerLoopScriptsDir } from '../generators/outerLoopScripts.js';
113
113
  import { bashScriptRule, entryWord, isUnderDirectory, namesBrowserTool, normalizedRoot, pluginRootDirectories, pluginRootEntries, pluginRootEntryTarget, pluginRootHelpers, PLUGIN_ROOT_ENTRIES_FLAG, PROFILE_PATH, renderProfile, TEMPLATE_PATH as PROFILE_TEMPLATE_PATH, } from '../generators/permissionProfile.js';
114
114
  import { ENABLED_PLUGINS_KEY, MARKETPLACE_ENTRY_SHAPE, MARKETPLACE_FLAG, MARKETPLACES_KEY, MARKETPLACE_NAME, marketplaceEntryDefect, PLUGIN_KEY, SETTINGS_PATH, SLUG_SHAPE, } from '../generators/projectSettings.js';
@@ -118,7 +118,7 @@ import { selectedStateDirs } from '../generators/stateDir.js';
118
118
  import { machineConfigDir } from '../machine/paths.js';
119
119
  import { installedPluginsPath, knownMarketplacesPath, pluginInstallRoot, pluginRuntimeRoot, pluginScriptsDir, } from '../machine/plugins.js';
120
120
  import { inspect, readRegistry, registryPath } from '../machine/registry.js';
121
- import { API_KEY_SECRET, CLI_VERSION_VARIABLE, DEFAULT_GH_CLI, COMMAND_HANDLE, COMMAND_VERBS, DEFAULT_TRIGGER_LABEL, GH_CLI_VARIABLE, ghCli, GIT_TOKEN_SECRET, LEGACY_TRIGGER_LABEL, OAUTH_TOKEN_SECRET, PR_CREATE_SETTING, PR_CREATE_SETTING_PATH, PUSH_URL_SECRET, REMOTE_STOP_VARIABLE, renderedCliVersions, runGh, RUNNER_VARIABLE, TRIGGER_ALLOWED_BOTS_VARIABLE, TRIGGER_LABEL_VARIABLE, triggerFallbackLabel, WORKFLOW_CONTROL_FILE, WORKFLOW_CONTROL_PATH, WORKFLOW_RESUME_FILE, WORKFLOW_RESUME_PATH, WORKFLOW_RUN_FILE, WORKFLOW_RUN_PATH, WORKFLOW_TRIGGER_FILE, WORKFLOW_TRIGGER_PATH, } from '../remote/githubActions.js';
121
+ import { API_KEY_SECRET, carriesRunActors, CLI_VERSION_VARIABLE, DEFAULT_GH_CLI, COMMAND_HANDLE, COMMAND_VERBS, DEFAULT_TRIGGER_LABEL, effectiveRunActors, GH_CLI_VARIABLE, ghCli, GIT_TOKEN_SECRET, LEGACY_TRIGGER_LABEL, OAUTH_TOKEN_SECRET, PR_CREATE_SETTING, PR_CREATE_SETTING_PATH, PUSH_URL_SECRET, REMOTE_STOP_VARIABLE, renderedCliVersions, runActorAdmitted, runGh, RUN_ACTORS_EVERY_WRITER, RUN_ACTORS_VARIABLE, RUNNER_VARIABLE, TRIGGER_ALLOWED_BOTS_VARIABLE, TRIGGER_LABEL_VARIABLE, triggerFallbackLabel, WORKFLOW_CONTROL_FILE, WORKFLOW_CONTROL_PATH, WORKFLOW_RESUME_FILE, WORKFLOW_RESUME_PATH, WORKFLOW_RUN_FILE, WORKFLOW_RUN_PATH, WORKFLOW_TRIGGER_FILE, WORKFLOW_TRIGGER_PATH, } from '../remote/githubActions.js';
122
122
  import { modelFilesPresent } from '../retrieval/models.js';
123
123
  import { launcherSearchPath, parseSelfCheck, PYTHON_DATABASE_URL_VARIABLE, PYTHON_FETCH_MODELS_SUB_COMMAND, PYTHON_RETRIEVAL_COMMAND, PYTHON_SELF_CHECK_SUB_COMMAND, pythonDatabaseUrl, SELF_CHECK_INDEX_NOT_ATTEMPTED, } from '../retrieval/pythonBackend.js';
124
124
  import { retrievalCliEntry, retrievalModelCacheDir, retrievalRuntimeDir, retrievalRuntimeState, } from '../retrieval/runtime.js';
@@ -156,6 +156,11 @@ const REMOTE_RUN_SCRIPT = 'remote-run.sh';
156
156
  * YAML file spells this endpoint.
157
157
  */
158
158
  const ARTIFACT_RETENTION_ENDPOINT = 'repos/{owner}/{repo}/actions/permissions/artifact-and-log-retention';
159
+ /**
160
+ * The `gh api` path {@link REMOTE_GITHUB_CHECK} reads the repository's workflow listing from, to find
161
+ * a harness workflow GitHub lists by its path. Local for {@link ARTIFACT_RETENTION_ENDPOINT}'s reason.
162
+ */
163
+ const WORKFLOWS_ENDPOINT = 'repos/{owner}/{repo}/actions/workflows?per_page=100';
159
164
  /**
160
165
  * The `gh api` path {@link REMOTE_GITHUB_CHECK} reads the *Allow GitHub Actions to create and approve
161
166
  * pull requests* setting from — `can_approve_pull_request_reviews`. Local for
@@ -163,6 +168,19 @@ const ARTIFACT_RETENTION_ENDPOINT = 'repos/{owner}/{repo}/actions/permissions/ar
163
168
  * usually can.
164
169
  */
165
170
  const PR_SETTING_ENDPOINT = 'repos/{owner}/{repo}/actions/permissions/workflow';
171
+ /**
172
+ * The `gh api` path {@link REMOTE_GITHUB_CHECK} reads the repository's owner from, to grade an unset
173
+ * {@link RUN_ACTORS_VARIABLE}. Local for {@link ARTIFACT_RETENTION_ENDPOINT}'s reason.
174
+ */
175
+ const REPOSITORY_ENDPOINT = 'repos/{owner}/{repo}';
176
+ /**
177
+ * The `gh api` path {@link REMOTE_GITHUB_CHECK} reads the repository's collaborators from, to name
178
+ * writers {@link RUN_ACTORS_VARIABLE} does not admit. Local for {@link ARTIFACT_RETENTION_ENDPOINT}'s
179
+ * reason. Listing collaborators needs push access.
180
+ */
181
+ const COLLABORATORS_ENDPOINT = 'repos/{owner}/{repo}/collaborators?per_page=100';
182
+ /** A full {@link COLLABORATORS_ENDPOINT} page: at this many entries more collaborators may exist. */
183
+ const COLLABORATORS_PAGE_SIZE = 100;
166
184
  /** Below this many days of artifact retention {@link REMOTE_GITHUB_CHECK} warns; argued there. */
167
185
  const ARTIFACT_RETENTION_WARN_DAYS = 30;
168
186
  /** The permission lists a generated profile carries, in the order the template writes them. */
@@ -1865,7 +1883,11 @@ const DAEMON_PATH_CHECK = {
1865
1883
  *
1866
1884
  * **Every finding is reported, and the grade is the worst of them.** Two `fail`s: no
1867
1885
  * `harness-run.yml`, because no remote run can be dispatched; and no `gh`, because the watcher
1868
- * dispatches through it. Four `warn`s: a `harness-run.yml` pinned (`remote/githubActions.ts` →
1886
+ * dispatches through it. Five `warn`s: a `harness-run.yml` whose text does not read
1887
+ * {@link RUN_ACTORS_VARIABLE} ({@link carriesRunActors}), remedied by {@link upgradeWorkflowsCommand} —
1888
+ * local evidence, because the workflow is what GitHub runs and only its text says whether the list
1889
+ * reaches the gate and the scripts; listed beside the pin warning when both fire, and an unreadable
1890
+ * file adds nothing to the pin note. A `harness-run.yml` pinned (`remote/githubActions.ts` →
1869
1891
  * {@link renderedCliVersions}) to a version other than this CLI's — never a `fail`, because the job
1870
1892
  * installs its pin and the adopter may stay on it deliberately; the remedy is
1871
1893
  * `generators/githubWorkflows.ts` → {@link upgradeWorkflowsCommand}, the alternative `doctor` at the
@@ -1954,6 +1976,9 @@ const REMOTE_EXECUTION_CHECK = {
1954
1976
  else if (pins !== undefined) {
1955
1977
  pinnedHere = true;
1956
1978
  }
1979
+ if (text !== undefined && !carriesRunActors(text)) {
1980
+ warnings.push(`\`${WORKFLOW_RUN_PATH}\` was written before \`${RUN_ACTORS_VARIABLE}\`: its run job launches for any writer's dispatch or re-run, and its collect job passes the scripts no list, so a review round's authors are held to an unset list (the repository owner alone, or nobody in an organisation-owned repository) once the scripts are re-rendered; \`${upgradeWorkflowsCommand(version)}\` re-renders it after a .bak (docs/remote-execution.md, section 7, Upgrading)`);
1981
+ }
1957
1982
  if (!branchUsable) {
1958
1983
  notes.push(`whether GitHub's default branch carries ${WORKFLOW_RUN_PATH} is not graded, because defaultBranch is not a branch name (see the config check)`);
1959
1984
  }
@@ -2026,6 +2051,32 @@ function retentionDaysOf(stdout) {
2026
2051
  const days = parsed.days;
2027
2052
  return typeof days === 'number' && Number.isInteger(days) && days > 0 ? days : undefined;
2028
2053
  }
2054
+ /**
2055
+ * Each `workflows[]` entry's `name`, keyed by its `path`, of an Actions workflow listing — entries
2056
+ * lacking a string `name` or `path` are skipped — with the listing's `total_count` (the entry count when
2057
+ * absent) and the number of entries listed, or `undefined` when there is no `workflows` array.
2058
+ */
2059
+ function workflowNamesByPathOf(stdout) {
2060
+ let parsed;
2061
+ try {
2062
+ parsed = JSON.parse(stdout);
2063
+ }
2064
+ catch {
2065
+ return undefined;
2066
+ }
2067
+ if (!isJsonObject(parsed))
2068
+ return undefined;
2069
+ const { workflows, total_count: totalCount } = parsed;
2070
+ if (!Array.isArray(workflows))
2071
+ return undefined;
2072
+ const names = new Map();
2073
+ for (const item of workflows) {
2074
+ if (isJsonObject(item) && typeof item.name === 'string' && typeof item.path === 'string')
2075
+ names.set(item.path, item.name);
2076
+ }
2077
+ const total = typeof totalCount === 'number' && Number.isInteger(totalCount) ? totalCount : workflows.length;
2078
+ return { names, total, listed: workflows.length };
2079
+ }
2029
2080
  /** The boolean `can_approve_pull_request_reviews` of a workflow-permissions answer, or `undefined` for any other shape. */
2030
2081
  function prApprovalSettingOf(stdout) {
2031
2082
  let parsed;
@@ -2040,6 +2091,49 @@ function prApprovalSettingOf(stdout) {
2040
2091
  const allowed = parsed.can_approve_pull_request_reviews;
2041
2092
  return typeof allowed === 'boolean' ? allowed : undefined;
2042
2093
  }
2094
+ /** The string `.owner.login` and `.owner.type` of a repository answer, or `undefined` for any other shape. */
2095
+ function repositoryOwnerOf(stdout) {
2096
+ let parsed;
2097
+ try {
2098
+ parsed = JSON.parse(stdout);
2099
+ }
2100
+ catch {
2101
+ return undefined;
2102
+ }
2103
+ if (!isJsonObject(parsed))
2104
+ return undefined;
2105
+ const owner = parsed.owner;
2106
+ if (!isJsonObject(owner))
2107
+ return undefined;
2108
+ const { login, type } = owner;
2109
+ return typeof login === 'string' && typeof type === 'string' ? { login, type } : undefined;
2110
+ }
2111
+ /**
2112
+ * Each `login` whose `permissions.push` is `true` — write, maintain and admin all carry it — of a
2113
+ * collaborators answer, with the array's length, or `undefined` for any other shape.
2114
+ */
2115
+ function writersOf(stdout) {
2116
+ let parsed;
2117
+ try {
2118
+ parsed = JSON.parse(stdout);
2119
+ }
2120
+ catch {
2121
+ return undefined;
2122
+ }
2123
+ if (!Array.isArray(parsed))
2124
+ return undefined;
2125
+ const logins = [];
2126
+ for (const item of parsed) {
2127
+ if (!isJsonObject(item) || typeof item.login !== 'string')
2128
+ return undefined;
2129
+ const permissions = item.permissions;
2130
+ if (!isJsonObject(permissions))
2131
+ return undefined;
2132
+ if (permissions.push === true)
2133
+ logins.push(item.login);
2134
+ }
2135
+ return { logins, count: parsed.length };
2136
+ }
2043
2137
  /**
2044
2138
  * What GitHub says about the remote setup — asked only under {@link CheckContext.probeGithub}.
2045
2139
  *
@@ -2049,9 +2143,14 @@ function prApprovalSettingOf(stdout) {
2049
2143
  *
2050
2144
  * Grades, worst wins and every finding is reported:
2051
2145
  * - `fail` — `gh` does not spawn or `gh auth status` refuses (nothing further is asked); GitHub does
2052
- * not know `harness-run.yml`; neither credential secret is set.
2146
+ * not know `harness-run.yml`; neither credential secret is set; a harness workflow GitHub lists by
2147
+ * its path, which is how it lists a file it could not parse — judged from the workflow listing
2148
+ * ({@link WORKFLOWS_ENDPOINT}) because `gh workflow view` answers for an unparsed file too, as Gate 12
2149
+ * round 7 observed. `harness-trigger.yml` and `harness-control.yml` are judged only when
2150
+ * {@link forgeTriggerApplies}.
2053
2151
  * - `warn` — `HARNESS_PUSH_URL` absent; `harness-resume.yml` unknown to GitHub; `HARNESS_REMOTE_STOP`
2054
- * set; artifact retention below {@link ARTIFACT_RETENTION_WARN_DAYS} days; when
2152
+ * set; the workflow listing unread, or not reaching a judged harness workflow because the repository
2153
+ * has more workflows than one page lists, so whether GitHub could parse it cannot be told; artifact retention below {@link ARTIFACT_RETENTION_WARN_DAYS} days; when
2055
2154
  * {@link forgeTriggerApplies}, `harness-trigger.yml` or `harness-control.yml` unknown to GitHub, no
2056
2155
  * label by the effective trigger name, or the pull-request setting off with no `HARNESS_GIT_TOKEN`
2057
2156
  * secret; and any call that timed out, could not reach GitHub, or answered in a shape not
@@ -2068,13 +2167,30 @@ function prApprovalSettingOf(stdout) {
2068
2167
  * - the retention read refused (typically HTTP 403: the endpoint needs admin access) is a note too —
2069
2168
  * the read is best-effort, and a collaborator without admin can still run remotely. A refused
2070
2169
  * pull-request-setting read is a note on the same terms.
2071
- * - the pull-request setting off with `HARNESS_GIT_TOKEN` set is a note: `deliver` opens the pull
2072
- * request with that token instead.
2170
+ * - the pull-request setting off with `HARNESS_GIT_TOKEN` set is a note: the `open` step at the run's
2171
+ * start opens the pull request with that token instead, and `deliver` opens one only when none is
2172
+ * open at completion.
2073
2173
  * - all three trigger answers positive — both workflows known and the label present — is confirmed on
2074
2174
  * every outcome that reaches the trigger reads, `fail` and `warn` included, so an unrelated finding
2075
- * never hides it; any answer not positive is already among the warnings. An outcome returned before
2175
+ * never hides it; any answer not positive is already among the warnings, and a forge workflow
2176
+ * GitHub lists by its path withholds it, being among the failures. An outcome returned before
2076
2177
  * those reads — `gh` not runnable, no usable login, or no readable answer to the login probe — asks
2077
2178
  * GitHub nothing about the trigger.
2179
+ * - who may start, steer, answer and review a run is {@link effectiveRunActors} of
2180
+ * `HARNESS_RUN_ACTORS`, read only when the variable listing was. An unset list adds a read of the
2181
+ * repository's owner ({@link REPOSITORY_ENDPOINT}); any answer but a readable owner — refused, timed
2182
+ * out, unreachable or an unread shape — is a *cannot tell* warning, and the list then grades as
2183
+ * admitting nobody with no second warning. `*`, a list of logins, and an unset list in a user-owned
2184
+ * repository are each a note naming who acts; an unset list whose owner is not a user is a `warn`
2185
+ * with the `gh variable set` remedy. `*` while `CLAUDE_CODE_OAUTH_TOKEN` is set is a `warn` whether
2186
+ * or not `ANTHROPIC_API_KEY` is also set: the token is one person's subscription, readable by every
2187
+ * writer.
2188
+ * - a list of logins or an owner-only list while `CLAUDE_CODE_OAUTH_TOKEN` is set adds a read of the
2189
+ * collaborators ({@link COLLABORATORS_ENDPOINT}). A writer the list does not admit is a `warn` naming
2190
+ * them: the list stops their spending through the harness, but a writer can still read the secret
2191
+ * through an edited workflow run from a branch. A full first page with no such writer is a *cannot
2192
+ * tell* warning, as are a timed-out, unreachable or unread answer; a refused read is a note on the
2193
+ * retention read's terms, since listing collaborators needs push access.
2078
2194
  *
2079
2195
  * **Why 30 days.** A parked run waits on a human answer and a usage-paused one on a reset, and the
2080
2196
  * `harness-state` bundle is the only remote copy of either; once the repository's retention expires
@@ -2152,16 +2268,55 @@ const REMOTE_GITHUB_CHECK = {
2152
2268
  if (resume.answer.kind === 'refused') {
2153
2269
  warnings.push(`GitHub does not know ${WORKFLOW_RESUME_FILE} (${resume.call}: ${resume.answer.why}), so usage auto-resume is unavailable: push ${WORKFLOW_RESUME_PATH} to the repository's default branch`);
2154
2270
  }
2271
+ const listing = ask(['api', WORKFLOWS_ENDPOINT]);
2272
+ if (listing.answer === undefined)
2273
+ return fail(noSpawn);
2274
+ const unparsed = new Set();
2275
+ const parsable = 'whether GitHub could parse the harness workflows';
2276
+ if (listing.answer.kind !== 'answered') {
2277
+ warnings.push(cannotTell(listing.call, listing.answer.why, parsable));
2278
+ }
2279
+ else {
2280
+ const listingRead = workflowNamesByPathOf(listing.answer.stdout);
2281
+ if (listingRead === undefined) {
2282
+ warnings.push(`cannot tell ${parsable}: ${listing.call} answered in a shape this check does not read`);
2283
+ }
2284
+ else {
2285
+ const version = ownManifestString('version');
2286
+ const judged = forgeTriggerApplies(ctx.config)
2287
+ ? [WORKFLOW_RUN_PATH, WORKFLOW_RESUME_PATH, WORKFLOW_TRIGGER_PATH, WORKFLOW_CONTROL_PATH]
2288
+ : [WORKFLOW_RUN_PATH, WORKFLOW_RESUME_PATH];
2289
+ const unseen = [];
2290
+ for (const path of judged) {
2291
+ const name = listingRead.names.get(path);
2292
+ if (name === undefined) {
2293
+ if (listingRead.total > listingRead.listed)
2294
+ unseen.push(path);
2295
+ continue;
2296
+ }
2297
+ if (name !== path)
2298
+ continue;
2299
+ unparsed.add(path);
2300
+ const route = path === WORKFLOW_CONTROL_PATH
2301
+ ? unparseableControlRoute(version)
2302
+ : `Check ${path} with actionlint, or re-render it with \`${pinnedCliCommand(version)} init --force\`, which keeps a .bak; then commit it and push it to the repository's default branch.`;
2303
+ failures.push(`GitHub lists ${path} by its path rather than its name, which it does for a workflow file it cannot parse, so that workflow runs for no event: ${route}`);
2304
+ }
2305
+ if (unseen.length > 0) {
2306
+ warnings.push(`cannot tell whether GitHub could parse ${nameList(unseen)}: ${listing.call} listed ${listingRead.listed} of the repository's ${listingRead.total} workflows, and not ${unseen.length === 1 ? 'that one' : 'those'}`);
2307
+ }
2308
+ }
2309
+ }
2155
2310
  const variables = ask(['variable', 'list', '--json', 'name,value']);
2156
2311
  if (variables.answer === undefined)
2157
2312
  return fail(noSpawn);
2158
2313
  const variableValues = variables.answer.kind === 'answered' ? ghJsonEntries(variables.answer.stdout) : undefined;
2159
2314
  let runner;
2160
2315
  if (variables.answer.kind !== 'answered') {
2161
- warnings.push(cannotTell(variables.call, variables.answer.why, `the ${RUNNER_VARIABLE} and ${REMOTE_STOP_VARIABLE} variables`));
2316
+ warnings.push(cannotTell(variables.call, variables.answer.why, `the ${RUNNER_VARIABLE}, ${REMOTE_STOP_VARIABLE} and ${RUN_ACTORS_VARIABLE} variables`));
2162
2317
  }
2163
2318
  else if (variableValues === undefined) {
2164
- warnings.push(`cannot tell the ${RUNNER_VARIABLE} and ${REMOTE_STOP_VARIABLE} variables: ${variables.call} answered in a shape this check does not read`);
2319
+ warnings.push(`cannot tell the ${RUNNER_VARIABLE}, ${REMOTE_STOP_VARIABLE} and ${RUN_ACTORS_VARIABLE} variables: ${variables.call} answered in a shape this check does not read`);
2165
2320
  }
2166
2321
  else {
2167
2322
  const label = variableValues.get(RUNNER_VARIABLE)?.trim() ?? '';
@@ -2189,6 +2344,73 @@ const REMOTE_GITHUB_CHECK = {
2189
2344
  warnings.push(`the repository keeps artifacts for ${retentionDays} days, so a remote run parked or paused longer than that loses its state bundle: raise it under Settings → Actions → General → Artifact and log retention`);
2190
2345
  }
2191
2346
  }
2347
+ // Undefined only when the variables listing was unread, whose warning above already names the list.
2348
+ let runActors;
2349
+ if (variableValues !== undefined) {
2350
+ const listed = variableValues.get(RUN_ACTORS_VARIABLE);
2351
+ const unset = effectiveRunActors(listed, undefined).kind === 'nobody';
2352
+ let owner;
2353
+ if (unset) {
2354
+ const repository = ask(['api', REPOSITORY_ENDPOINT]);
2355
+ if (repository.answer === undefined)
2356
+ return fail(noSpawn);
2357
+ const whoOwns = 'who owns the repository, so who may act on a run';
2358
+ if (repository.answer.kind !== 'answered') {
2359
+ warnings.push(cannotTell(repository.call, repository.answer.why, whoOwns));
2360
+ }
2361
+ else {
2362
+ owner = repositoryOwnerOf(repository.answer.stdout);
2363
+ if (owner === undefined)
2364
+ warnings.push(`cannot tell ${whoOwns}: ${repository.call} answered in a shape this check does not read`);
2365
+ }
2366
+ }
2367
+ runActors = effectiveRunActors(listed, owner);
2368
+ const acts = 'start, steer, answer and review a run';
2369
+ if (runActors.kind === 'every-writer') {
2370
+ notes.push(`${RUN_ACTORS_VARIABLE} is \`${RUN_ACTORS_EVERY_WRITER}\`, so every collaborator with write access may ${acts}`);
2371
+ }
2372
+ else if (runActors.kind === 'listed') {
2373
+ notes.push(`${RUN_ACTORS_VARIABLE} admits ${nameList(runActors.logins)}, so only ${runActors.logins.length === 1 ? 'that login' : 'those logins'} may ${acts}`);
2374
+ }
2375
+ else if (runActors.kind === 'owner') {
2376
+ notes.push(`${RUN_ACTORS_VARIABLE} is unset, so only the repository owner, ${runActors.login}, may ${acts}`);
2377
+ }
2378
+ else if (runActors.owner !== undefined) {
2379
+ const { login, type } = runActors.owner;
2380
+ warnings.push(`${RUN_ACTORS_VARIABLE} is unset and ${login} is ${/^[aeiou]/i.test(type) ? 'an' : 'a'} ${type}, not a user, so no person may start, steer, answer or review a run: set it with \`gh variable set ${RUN_ACTORS_VARIABLE} --body <login,login>\`, or \`--body '${RUN_ACTORS_EVERY_WRITER}'\` for every writer`);
2381
+ }
2382
+ if (runActors.kind === 'every-writer' && secretNames?.has(OAUTH_TOKEN_SECRET) === true) {
2383
+ warnings.push(`${RUN_ACTORS_VARIABLE} is \`${RUN_ACTORS_EVERY_WRITER}\` while ${OAUTH_TOKEN_SECRET} is set, so every writer's runs spend one person's subscription, which its terms do not let them share: name the people in ${RUN_ACTORS_VARIABLE}, or use a Claude API organisation's key in ${API_KEY_SECRET} (docs/remote-execution.md, section 9)`);
2384
+ }
2385
+ if ((runActors.kind === 'listed' || runActors.kind === 'owner') && secretNames?.has(OAUTH_TOKEN_SECRET) === true) {
2386
+ const admitted = runActors;
2387
+ const collaborators = ask(['api', COLLABORATORS_ENDPOINT]);
2388
+ if (collaborators.answer === undefined)
2389
+ return fail(noSpawn);
2390
+ const beyond = `whether any writer is beyond ${RUN_ACTORS_VARIABLE}`;
2391
+ if (collaborators.answer.kind === 'unknown') {
2392
+ warnings.push(cannotTell(collaborators.call, collaborators.answer.why, beyond));
2393
+ }
2394
+ else if (collaborators.answer.kind === 'refused') {
2395
+ notes.push(`writers beyond ${RUN_ACTORS_VARIABLE} not checked: ${collaborators.call} needs push access (${collaborators.answer.why})`);
2396
+ }
2397
+ else {
2398
+ const writers = writersOf(collaborators.answer.stdout);
2399
+ if (writers === undefined) {
2400
+ warnings.push(`cannot tell ${beyond}: ${collaborators.call} answered in a shape this check does not read`);
2401
+ }
2402
+ else {
2403
+ const extra = writers.logins.filter((login) => !runActorAdmitted(admitted, login));
2404
+ if (extra.length > 0) {
2405
+ warnings.push(`${OAUTH_TOKEN_SECRET} is set and ${nameList(extra)} can write to the repository without being on ${RUN_ACTORS_VARIABLE}: the list stops them spending the subscription through the harness, but any writer can still read the secret by running an edited workflow from a branch; on a private repository a push ruleset on the workflow paths and the scripts they run closes that, and on a public one only withholding write access does (docs/remote-execution.md, section 9)`);
2406
+ }
2407
+ else if (writers.count === COLLABORATORS_PAGE_SIZE) {
2408
+ warnings.push(`cannot tell ${beyond}: ${collaborators.call} returned a full page of ${COLLABORATORS_PAGE_SIZE} collaborators with no writer beyond the list, and more may exist`);
2409
+ }
2410
+ }
2411
+ }
2412
+ }
2413
+ }
2192
2414
  let triggerKnown = '';
2193
2415
  if (forgeTriggerApplies(ctx.config)) {
2194
2416
  const trigger = ask(['workflow', 'view', WORKFLOW_TRIGGER_FILE]);
@@ -2250,7 +2472,8 @@ const REMOTE_GITHUB_CHECK = {
2250
2472
  notes.push(`${TRIGGER_ALLOWED_BOTS_VARIABLE} admits ${nameList(bots)}, each of which can start a run without a permission check`);
2251
2473
  }
2252
2474
  }
2253
- if (trigger.answer.kind === 'answered' && control.answer.kind === 'answered' && labelFound) {
2475
+ const forgeParsed = !unparsed.has(WORKFLOW_TRIGGER_PATH) && !unparsed.has(WORKFLOW_CONTROL_PATH);
2476
+ if (trigger.answer.kind === 'answered' && control.answer.kind === 'answered' && labelFound && forgeParsed) {
2254
2477
  triggerKnown = `; GitHub knows ${WORKFLOW_TRIGGER_FILE} and ${WORKFLOW_CONTROL_FILE}, and the label \`${labelName}\` exists`;
2255
2478
  }
2256
2479
  const prSetting = ask(['api', PR_SETTING_ENDPOINT]);
@@ -2268,13 +2491,13 @@ const REMOTE_GITHUB_CHECK = {
2268
2491
  warnings.push(`cannot tell whether a run's own token may open its pull request: ${prSetting.call} answered in a shape this check does not read`);
2269
2492
  }
2270
2493
  else if (!allowed && secretNames === undefined) {
2271
- warnings.push(`${PR_CREATE_SETTING} is off, and whether ${GIT_TOKEN_SECRET} is set could not be read, so a completed run may not be able to open its draft pull request: turn the setting on under ${PR_CREATE_SETTING_PATH}, or confirm ${GIT_TOKEN_SECRET} is a repository secret`);
2494
+ warnings.push(`${PR_CREATE_SETTING} is off, and whether ${GIT_TOKEN_SECRET} is set could not be read, so a run may not be able to open its draft pull request when it starts: turn the setting on under ${PR_CREATE_SETTING_PATH}, or confirm ${GIT_TOKEN_SECRET} is a repository secret`);
2272
2495
  }
2273
2496
  else if (!allowed && secretNames?.has(GIT_TOKEN_SECRET) === true) {
2274
- notes.push(`${PR_CREATE_SETTING} is off, so a completed run opens its draft pull request with ${GIT_TOKEN_SECRET}`);
2497
+ notes.push(`${PR_CREATE_SETTING} is off, so a run opens its draft pull request with ${GIT_TOKEN_SECRET}`);
2275
2498
  }
2276
2499
  else if (!allowed) {
2277
- warnings.push(`${PR_CREATE_SETTING} is off and ${GIT_TOKEN_SECRET} is not a repository secret, so a completed run cannot open its draft pull request with the job's token: turn it on under ${PR_CREATE_SETTING_PATH}, or set ${GIT_TOKEN_SECRET} with \`gh secret set ${GIT_TOKEN_SECRET}\``);
2500
+ warnings.push(`${PR_CREATE_SETTING} is off and ${GIT_TOKEN_SECRET} is not a repository secret, so a run cannot open its draft pull request with the job's token: turn it on under ${PR_CREATE_SETTING_PATH}, or set ${GIT_TOKEN_SECRET} with \`gh secret set ${GIT_TOKEN_SECRET}\``);
2278
2501
  }
2279
2502
  }
2280
2503
  }
@@ -2307,7 +2530,12 @@ const REMOTE_GITHUB_CHECK = {
2307
2530
  * workflow not carried by `origin/<defaultBranch>`, because GitHub runs an `issues` or
2308
2531
  * `issue_comment` workflow only from its default branch — that last with
2309
2532
  * {@link REMOTE_EXECUTION_CHECK}'s push remedy and its two *not graded* notes, on the same reasoning.
2310
- * Each warn names every file it is about, so two absent files are one line naming both.
2533
+ * Each warn names every file it is about, so two absent files are one line naming both. A fourth,
2534
+ * joined to whichever of those fires or standing alone: a present forge workflow whose text does not
2535
+ * read {@link RUN_ACTORS_VARIABLE} ({@link carriesRunActors}), named in one warning with `init --force`
2536
+ * — these two carry no pin and move with the scripts, not with {@link upgradeWorkflowsCommand}. It is
2537
+ * local evidence because the workflows are what GitHub runs and only their text says whether the list
2538
+ * reaches the scripts; a read that throws is skipped.
2311
2539
  *
2312
2540
  * A value outside {@link FORGE_KINDS} is the config check's `fail`, and is not graded here.
2313
2541
  */
@@ -2348,9 +2576,22 @@ const FORGE_CHECK = {
2348
2576
  [WORKFLOW_CONTROL_PATH]: 'comments and reviews start nothing',
2349
2577
  };
2350
2578
  const consequence = (paths) => paths.map((path) => startsNothing[path]).join(', and ');
2579
+ const listless = forgeTriggerApplies(ctx.config)
2580
+ ? presentWorkflows.filter((path) => {
2581
+ try {
2582
+ return !carriesRunActors(readFileSync(join(root, ...path.split('/')), 'utf8'));
2583
+ }
2584
+ catch {
2585
+ return false;
2586
+ }
2587
+ })
2588
+ : [];
2589
+ const listlessWarning = listless.length === 0
2590
+ ? ''
2591
+ : `${nameList(listless)} ${listless.length === 1 ? 'was' : 'were'} written before \`${RUN_ACTORS_VARIABLE}\` and ${listless.length === 1 ? 'passes' : 'pass'} the scripts no list: with scripts written at the same time every writer may still start and command a run, and with the scripts re-rendered every start and command is held to an unset list — the repository owner alone, or nobody in an organisation-owned repository; \`${CLI} init --force\` replaces both workflows and the scripts after a .bak (docs/remote-execution.md, section 7, Upgrading)`;
2351
2592
  const absent = forgeWorkflows.filter((path) => !presentWorkflows.includes(path));
2352
2593
  if (absent.length > 0) {
2353
- return warn(`${on}, but ${nameList(absent)} ${isAre(absent)} absent, so ${consequence(absent)}: re-run \`${CLI} init\`, which writes ${absent.length === 1 ? 'it' : 'them'} create-if-absent`);
2594
+ return warn(`${on}, but ${nameList(absent)} ${isAre(absent)} absent, so ${consequence(absent)}: re-run \`${CLI} init\`, which writes ${absent.length === 1 ? 'it' : 'them'} create-if-absent${listless.length > 0 ? `; ${listlessWarning}` : ''}`);
2354
2595
  }
2355
2596
  const branch = ctx.config.defaultBranch;
2356
2597
  let carried;
@@ -2363,14 +2604,17 @@ const FORGE_CHECK = {
2363
2604
  else {
2364
2605
  const uncarried = forgeWorkflows.filter((path) => !pathAtRef(root, `origin/${branch}`, path));
2365
2606
  if (uncarried.length > 0) {
2366
- return warn(`${on}, but origin/${branch} does not carry ${nameList(uncarried)}, as this checkout last fetched it, and GitHub runs an issues or issue_comment workflow only from its default branch, so ${consequence(uncarried)} yet: commit ${uncarried.length === 1 ? 'it' : 'them'}, then run \`${WORKFLOW_SCOPE_COMMAND}\`, then \`${defaultBranchPushCommand(branch)}\`. ${WORKFLOW_SCOPE_REASON} ${defaultBranchPushReason(branch)}`);
2607
+ return warn(`${on}, but origin/${branch} does not carry ${nameList(uncarried)}, as this checkout last fetched it, and GitHub runs an issues or issue_comment workflow only from its default branch, so ${consequence(uncarried)} yet: commit ${uncarried.length === 1 ? 'it' : 'them'}, then run \`${WORKFLOW_SCOPE_COMMAND}\`, then \`${defaultBranchPushCommand(branch)}\`. ${WORKFLOW_SCOPE_REASON} ${defaultBranchPushReason(branch)}${listless.length > 0 ? ` ${listlessWarning}` : ''}`);
2367
2608
  }
2368
2609
  carried = ` and origin/${branch} carries them`;
2369
2610
  }
2611
+ if (listless.length > 0) {
2612
+ return warn(`${on}: ${WORKFLOW_TRIGGER_PATH} and ${WORKFLOW_CONTROL_PATH} are present${carried}; ${listlessWarning}`);
2613
+ }
2370
2614
  const asked = ctx.probeGithub
2371
2615
  ? `the ${REMOTE_GITHUB_CHECK.id} check above reports what GitHub says`
2372
2616
  : `\`${CLI} doctor --check-github\` asks GitHub`;
2373
- return pass(`${on}: ${WORKFLOW_TRIGGER_PATH} and ${WORKFLOW_CONTROL_PATH} are present${carried}. Labelling an issue with the ${TRIGGER_LABEL_VARIABLE} label (default \`${DEFAULT_TRIGGER_LABEL}\`) starts a task run; a \`${COMMAND_HANDLE} <verb>\` comment (${nameList([...COMMAND_VERBS])}) steers it; a review requesting changes on the run's pull request starts a user-review round; and a completed run opens a draft pull request. What this cannot see lives on GitHub — the label, the workflows GitHub knows (${WORKFLOW_TRIGGER_FILE}, ${WORKFLOW_CONTROL_FILE}) and the pull-request setting; ${asked}`);
2617
+ return pass(`${on}: ${WORKFLOW_TRIGGER_PATH} and ${WORKFLOW_CONTROL_PATH} are present${carried}. Labelling an issue with the ${TRIGGER_LABEL_VARIABLE} label (default \`${DEFAULT_TRIGGER_LABEL}\`) starts a task run; a \`${COMMAND_HANDLE} <verb>\` comment (${nameList([...COMMAND_VERBS])}) steers it; a review requesting changes on the run's pull request starts a user-review round; and a run opens a draft pull request when it starts, marked ready for review when it completes. What this cannot see lives on GitHub — the label, the workflows GitHub knows (${WORKFLOW_TRIGGER_FILE}, ${WORKFLOW_CONTROL_FILE}) and the pull-request setting; ${asked}`);
2374
2618
  },
2375
2619
  };
2376
2620
  /**