@generacy-ai/cockpit 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"parse-epic-body.d.ts","sourceRoot":"","sources":["../../src/resolver/parse-epic-body.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,cAAc,EAAe,MAAM,YAAY,CAAC;AA4CxE;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA8F1D"}
1
+ {"version":3,"file":"parse-epic-body.d.ts","sourceRoot":"","sources":["../../src/resolver/parse-epic-body.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,cAAc,EAAe,MAAM,YAAY,CAAC;AAiDxE;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAoH1D"}
@@ -3,6 +3,11 @@ import { parseRef } from './ref-shapes.js';
3
3
  const HEADING_L3_RE = /^###\s+(.+?)\s*$/;
4
4
  const HEADING_L4_PLUS_RE = /^####+\s+/;
5
5
  const HEADING_L2_RE = /^##\s+/;
6
+ // #1006 (Q1=C, word-boundaried): trimmed L4+ heading text is "phase-shaped"
7
+ // iff it matches `P\d+\b` OR contains a word-boundaried `phase`. See
8
+ // contracts/parser-behavior.md for matches / non-matches. Load-bearing:
9
+ // `\bphase\b` (not `phase`) so `#### Rephrase …` does not fire the detector.
10
+ const PHASE_SHAPED_H4_RE = /^\s*(?:P\d+\b|.*\bphase\b)/i;
6
11
  // Case-insensitive first-token match: closes current phase (parses like L4+),
7
12
  // and marks subsequent refs as adhoc rather than dropped.
8
13
  const AD_HOC_HEADING_RE = /^##\s+ad-hoc\s*$/i;
@@ -59,11 +64,16 @@ export function parseEpicBody(body) {
59
64
  const adhocSeen = new Set();
60
65
  let current = null;
61
66
  let currentSeen = new Set();
67
+ let sawPhaseShapedH4 = false;
62
68
  const lines = body.split(/\r?\n/);
63
69
  for (let i = 0; i < lines.length; i++) {
64
70
  const line = lines[i];
65
71
  const lineNumber = i + 1;
66
72
  if (HEADING_L4_PLUS_RE.test(line)) {
73
+ const text = line.replace(/^####+\s+/, '').trim();
74
+ if (PHASE_SHAPED_H4_RE.test(text)) {
75
+ sawPhaseShapedH4 = true;
76
+ }
67
77
  current = null;
68
78
  currentSeen = new Set();
69
79
  continue;
@@ -130,6 +140,18 @@ export function parseEpicBody(body) {
130
140
  }
131
141
  }
132
142
  const allRefs = sortRefs(globalRefs.values());
143
+ // #1006 (FR-009): loud signal for LLM-authored epics whose phase headers
144
+ // dropped an H-level. All four conditions required — see
145
+ // contracts/parser-behavior.md §Loud-signal gating rule. The marker
146
+ // substring in the pushed string below is contractual (grep-audited per
147
+ // SC-006); the surrounding sentence is free to evolve.
148
+ if (phases.length > 0 &&
149
+ phases.every((p) => p.refs.length === 0) &&
150
+ adhocRefs.length > 0 &&
151
+ sawPhaseShapedH4) {
152
+ const n = adhocRefs.length;
153
+ warnings.push(`cockpit: ${n} task ref${n === 1 ? '' : 's'} fell to ad-hoc; phase headers must be '###', found '####'`);
154
+ }
133
155
  return { phases, adhocRefs, allRefs, warnings };
134
156
  }
135
157
  //# sourceMappingURL=parse-epic-body.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-epic-body.js","sourceRoot":"","sources":["../../src/resolver/parse-epic-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,aAAa,GAAG,kBAAkB,CAAC;AACzC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AACvC,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,YAAY,GAAG,+BAA+B,CAAC;AACrD,MAAM,aAAa,GACjB,uJAAuJ,CAAC;AAE1J,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,6DAA6D;AAC7D,0CAA0C;AAC1C,kBAAkB;AAClB,kCAAkC;AAClC,sCAAsC;AACtC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAChC,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,0DAA0D,CAAC;IACpE,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,oDAAoD,CAAC;IAC9D,CAAC;IACD,OAAO,gDAAgD,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAwB;IACxC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7B,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,GAAa;IAC7B,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,IAAI,OAAO,GAAuB,IAAI,CAAC;IACvC,IAAI,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,IAAI,CAAC;YACf,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,sEAAsE;QACtE,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC;YACf,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACvC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,IAAI;YAAE,SAAS;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAChC,+EAA+E;QAC/E,sEAAsE;QACtE,yEAAyE;QACzE,uEAAuE;QACvE,sBAAsB;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;QAE1C,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,2EAA2E;YAC3E,mEAAmE;YACnE,yDAAyD;YACzD,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC3C,QAAQ,CAAC,IAAI,CACX,8CAA8C,UAAU,MAAM,OAAO,MAAM,MAAM,GAAG,CACrF,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,mEAAmE;YACnE,yEAAyE;YACzE,wEAAwE;YACxE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3B,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"parse-epic-body.js","sourceRoot":"","sources":["../../src/resolver/parse-epic-body.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@generacy-ai/cockpit",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Foundation library for the Generacy Epic Cockpit: classifier, config loader, epic manifest, gh wrapper",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",