instar 1.3.950 → 1.3.951

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.
@@ -21,6 +21,12 @@ export interface WorkQueueReader {
21
21
  feedback(): WorkItem[];
22
22
  topics(): WorkItem[];
23
23
  }
24
+ /** Named scoring knobs: age can never bridge one explicit-priority band. */
25
+ export declare const AGE_SCORE_PER_DAY = 0.5;
26
+ export declare const MAX_AGE_SCORE = 20;
27
+ export declare const STALE_AFTER_DAYS = 30;
28
+ export declare const STALE_DISCOUNT_PER_DAY = 0.5;
29
+ export declare const MAX_STALE_DISCOUNT = 60;
24
30
  export declare function scoreWorkItem(item: WorkItem): number;
25
31
  export declare function normalizeAndRank(items: WorkItem[]): WorkItem[];
26
32
  /** Unified work-intake registry: normalizes and ranks active cross-source work. */
@@ -1 +1 @@
1
- {"version":3,"file":"WorkQueue.d.ts","sourceRoot":"","sources":["../../src/core/WorkQueue.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,UAAU,GAAG,OAAO,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAEpG,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,IAAI,QAAQ,EAAE,CAAC;IAC1B,gBAAgB,IAAI,QAAQ,EAAE,CAAC;IAC/B,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACvB,MAAM,IAAI,QAAQ,EAAE,CAAC;CACtB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAOpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAS9D;AAED,mFAAmF;AACnF,qBAAa,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,MAAM,CAAkB;gBACH,MAAM,EAAE,eAAe;IACpD,OAAO,IAAI,QAAQ,EAAE;IAOrB,IAAI,IAAI,QAAQ,EAAE;CACnB"}
1
+ {"version":3,"file":"WorkQueue.d.ts","sourceRoot":"","sources":["../../src/core/WorkQueue.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,kBAAkB,GAAG,UAAU,GAAG,OAAO,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAEpG,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,IAAI,QAAQ,EAAE,CAAC;IAC1B,gBAAgB,IAAI,QAAQ,EAAE,CAAC;IAC/B,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACvB,MAAM,IAAI,QAAQ,EAAE,CAAC;CACtB;AAGD,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAUrC,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAOpD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAS9D;AAED,mFAAmF;AACnF,qBAAa,iBAAiB;IAEhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,MAAM,CAAkB;gBACH,MAAM,EAAE,eAAe;IACpD,OAAO,IAAI,QAAQ,EAAE;IAOrB,IAAI,IAAI,QAAQ,EAAE;CACnB"}
@@ -1,11 +1,23 @@
1
1
  const PRIORITY = { critical: 100, high: 70, medium: 40, low: 10 };
2
+ /** Named scoring knobs: age can never bridge one explicit-priority band. */
3
+ export const AGE_SCORE_PER_DAY = 0.5;
4
+ export const MAX_AGE_SCORE = 20;
5
+ export const STALE_AFTER_DAYS = 30;
6
+ export const STALE_DISCOUNT_PER_DAY = 0.5;
7
+ export const MAX_STALE_DISCOUNT = 60;
8
+ function ageScore(ageDays) {
9
+ return Math.min(MAX_AGE_SCORE, Math.max(0, ageDays) * AGE_SCORE_PER_DAY);
10
+ }
11
+ function stalenessDiscount(ageDays) {
12
+ return Math.min(MAX_STALE_DISCOUNT, Math.max(0, ageDays - STALE_AFTER_DAYS) * STALE_DISCOUNT_PER_DAY);
13
+ }
2
14
  export function scoreWorkItem(item) {
3
15
  const explicit = item.priority ? PRIORITY[item.priority] : 0;
4
16
  const directed = item.userDirected ? 50 : 0;
5
- const age = Math.min(30, Math.max(0, item.ageDays)) * 2;
17
+ const age = ageScore(item.ageDays);
6
18
  const urgency = Math.max(0, Math.min(100, item.urgency));
7
19
  const goals = item.goalAlignment.length > 0 ? 10 : 0;
8
- return explicit + directed + urgency + age + goals;
20
+ return explicit + directed + urgency + age + goals - stalenessDiscount(item.ageDays);
9
21
  }
10
22
  export function normalizeAndRank(items) {
11
23
  const deduped = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"WorkQueue.js","sourceRoot":"","sources":["../../src/core/WorkQueue.ts"],"names":[],"mappings":"AA0BA,MAAM,QAAQ,GAAsD,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AAErH,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;YAAE,SAAS;QACrF,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/G,CAAC;AAED,mFAAmF;AACnF,MAAM,OAAO,iBAAiB;IAEC;IADrB,MAAM,GAAe,EAAE,CAAC;IAChC,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IACxD,OAAO;QACL,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC;YAC7B,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAC/D,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;SACnD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,IAAI,KAAiB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CACtF"}
1
+ {"version":3,"file":"WorkQueue.js","sourceRoot":"","sources":["../../src/core/WorkQueue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.950",
3
+ "version": "1.3.951",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-07-25T02:07:24.066Z",
5
- "instarVersion": "1.3.950",
4
+ "generatedAt": "2026-07-25T03:03:08.442Z",
5
+ "instarVersion": "1.3.951",
6
6
  "entryCount": 202,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -0,0 +1,18 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ Work queue ranking now caps age influence below a priority band and steadily discounts untouched work after 30 days.
9
+
10
+ ## What to Tell Your User
11
+
12
+ Fresh critical and high-priority work is no longer buried beneath old medium items, while genuinely neglected work still remains visible with a bounded score.
13
+
14
+ ## Summary of New Capabilities
15
+
16
+ - Named age and staleness scoring knobs.
17
+ - Deterministic stale-item discount with no clock dependency.
18
+ - Regression tests and synthetic before/after ranking proof.
@@ -0,0 +1,6 @@
1
+ # Side-effects review: Work Queue v2 scoring
2
+
3
+ - Rebalances deterministic scoring so explicit priority dominates the bounded age term.
4
+ - Adds named stale threshold, per-day discount, and discount cap; ageDays remains an explicit input with no clock or randomness.
5
+ - Unit tests cover fresh-high versus old-medium and fresh-critical versus untouched three-month critical.
6
+ - PR proof uses only synthetic backlog items; no operator backlog data is copied into the repository.