@lmzhen/dsh-evolution-curator 0.6.1 → 0.8.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.
package/README.md CHANGED
@@ -24,11 +24,11 @@ Deterministic skill lifecycle and recovery
24
24
 
25
25
  ## Configuration
26
26
 
27
- - `autoStart` (default true) arms an HOURLY tick that only asks whether the due-ness interval (`intervalHours`, default 168 h) has elapsed — the tick is not the interval — plus a deferred catch-up check `bootGraceSeconds` (default 10) after host boot. Both decide due-ness from the **persisted** `lastRunAt`, so a restart with an overdue schedule runs the first pass within the boot grace instead of waiting a full interval. `bootGraceSeconds: 0` disables the deferral (not recommended: the check may run against a half-mounted host). All scheduling gates — interval, idle, first-run deferral, and the reentrancy guard — remain inside `run()`.
27
+ - `autoStart` (default true) arms an HOURLY tick that only asks whether the due-ness interval (`curatorIntervalHours`, default 168 h) has elapsed — the tick is not the interval — plus a deferred catch-up check `bootGraceSeconds` (default 10) after host boot. Both decide due-ness from the **persisted** `lastRunAt`, so a restart with an overdue schedule runs the first pass within the boot grace instead of waiting a full interval. `bootGraceSeconds: 0` disables the deferral (not recommended: the check may run against a half-mounted host). All scheduling gates — interval, idle, first-run deferral, and the reentrancy guard — remain inside `run()`.
28
28
  - `autoStart: false` disables both automatic checks; `/evolution curator run` (manual, gate-skipping) still works.
29
29
  - Deprecated name (G0/S0.3): `intervalHours` is the legacy spelling of the policy
30
30
  row's `curatorIntervalHours`, whose value the snapshot shadows. Reading it still
31
- works; writing it is refused, and it is removed in 0.7.0.
31
+ works; writing it is refused. Removal was planned for 0.7.0 and is deferred: the alias still ships, so no later version is claimed here.
32
32
 
33
33
  **Runtime invariant:** No companion is published. The platform auto-assembles nothing and the family mounts no `<pkg>/invariant` cordis row, so a companion here would never execute (v37 S2.1 / I-3).
34
34
  ## Notes and history
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ import { randomUUID } from "node:crypto";
3
3
  import { join } from "node:path";
4
4
  import { BlockAssembler, createUserMessage } from "@deepseek-ai/dsh-llm";
5
5
  import z from "@deepseek-ai/schemastery";
6
- import { CURATOR_DRY_RUN_BANNER, CURATOR_PROMPT, DEFAULT_ARCHIVE_AFTER_DAYS, DEFAULT_CURATOR_BOOT_GRACE_SECONDS, DEFAULT_CURATOR_INTERVAL_HOURS, DEFAULT_CURATOR_MODEL, DEFAULT_CURATOR_REVIEW_MAX_TOKENS, DEFAULT_HEALTH_THRESHOLDS, DEFAULT_MIN_IDLE_HOURS, DEFAULT_SKILL_LIMITS, DEFAULT_STALE_AFTER_DAYS, EvolutionGateSet, INSTANCE_KEYS, MAX_TIMER_DELAY_MS, PARAM_NAMESPACES, SKILL_NAME_RE, buildCuratorRunReport, claimInstance, clampedNumber, computeDedupGroups, computeLifecycleTransitions, computePrefixClusters, computeQualityScores, computeScopeView, emptyRecord, evolutionHome, evolutionIoAdapter, foldCuratorFields, installParamSection, isPresent, isUnknown, loadSuppressedNames, loadUsage, markerEntryName, mutateUsage, newSkillLibrary, parseCuratorNominations, parseFrontmatter, policyStageLimits, probeList, probeMtime, readNumberParam, relatedSkillNames, releaseInstance, renderCuratorReportMarkdown, transactIo, updateSuppressedNames, usageObserved } from "@lmzhen/dsh-evolution-core";
6
+ import { CURATOR_DRY_RUN_BANNER, CURATOR_PROMPT, DEFAULT_ARCHIVE_AFTER_DAYS, DEFAULT_CURATOR_BOOT_GRACE_SECONDS, DEFAULT_CURATOR_INTERVAL_HOURS, DEFAULT_CURATOR_MODEL, DEFAULT_CURATOR_REVIEW_MAX_TOKENS, DEFAULT_HEALTH_THRESHOLDS, DEFAULT_MIN_IDLE_HOURS, DEFAULT_SKILL_LIMITS, DEFAULT_STALE_AFTER_DAYS, EvolutionGateSet, INSTANCE_KEYS, MAX_TIMER_DELAY_MS, SKILL_NAME_RE, buildCuratorRunReport, claimInstance, clampedNumber, computeDedupGroups, computeLifecycleTransitions, computePrefixClusters, computeQualityScores, computeScopeView, emptyRecord, evolutionHome, evolutionIoAdapter, foldCuratorFields, installParamSection, isPresent, isUnknown, loadSuppressedNames, loadUsage, markerEntryName, mutateUsage, newSkillLibrary, paramNamespace, parseCuratorNominations, parseFrontmatter, policyStageLimits, probeList, probeMtime, readNumberParam, relatedSkillNames, releaseInstance, renderCuratorReportMarkdown, transactIo, updateSuppressedNames, usageObserved } from "@lmzhen/dsh-evolution-core";
7
7
  //#region lib/types/index.js
8
8
  /**
9
9
  * Deterministic skill lifecycle curator with interval gate and archive.
@@ -17,8 +17,6 @@ const DEFAULT_QUALITY_WARN_STALE_AFTER_DAYS = 7;
17
17
  * 120s matches the review subagent default; the 32-bit ceiling is Node's
18
18
  * timer-delay limit (`AbortSignal.timeout` throws above it). */
19
19
  const DEFAULT_CURATOR_REVIEW_TIMEOUT_MS = 12e4;
20
- /** Namespace the curator group's user-writable knobs live in (core's PARAM_NAMESPACES). */
21
- const CURATOR_SETTINGS_NAMESPACE = "evolution-curator";
22
20
  /** Schema the platform validates the user layer against; defaults mirror the core
23
21
  * constants and the bounds mirror the row schema, so an empty document resolves to
24
22
  * today's behaviour and an out-of-range value is refused instead of clamped. */
@@ -201,7 +199,7 @@ var EvolutionCurator = class extends Service {
201
199
  healthStampDensityPerKb: this.healthStampDensityPerKb,
202
200
  healthChurnMinPatches: this.healthChurnMinPatches
203
201
  };
204
- this.overrides = installParamSection(ctx, PARAM_NAMESPACES["evolution-curator"] ?? "evolution-curator", CURATOR_SETTINGS_SCHEMA, this.settingsBase, {
202
+ this.overrides = installParamSection(ctx, paramNamespace("evolution-curator"), CURATOR_SETTINGS_SCHEMA, this.settingsBase, {
205
203
  warn: (message) => {
206
204
  this.ctx.logger.warn("dsh-evolution-curator: " + message);
207
205
  },
@@ -1336,4 +1334,4 @@ function reportsSweepLockTarget() {
1336
1334
  return join(evolutionHome(), "reports", ".retention");
1337
1335
  }
1338
1336
  //#endregion
1339
- export { CURATOR_SETTINGS_NAMESPACE, CURATOR_SETTINGS_SCHEMA, EvolutionCurator, EvolutionCurator as default, gateConsolidations, validateCuratorSettings };
1337
+ export { CURATOR_SETTINGS_SCHEMA, EvolutionCurator, EvolutionCurator as default, gateConsolidations, validateCuratorSettings };
@@ -61,8 +61,6 @@ export interface Config {
61
61
  /** Structure-health write-ghost floor: patches at/above with zero reads (A2). */
62
62
  healthChurnMinPatches?: number;
63
63
  }
64
- /** Namespace the curator group's user-writable knobs live in (core's PARAM_NAMESPACES). */
65
- export declare const CURATOR_SETTINGS_NAMESPACE = "evolution-curator";
66
64
  /** Curator behaviour a user may change (G3/S3.3). Field names are the CANONICAL
67
65
  * parameter ids from the registry, so the settings document, the params output,
68
66
  * the doctor report and the cards all spell one name. */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lmzhen/dsh-evolution-curator",
3
3
  "description": "Deterministic skill lifecycle and recovery (community build)",
4
- "version": "0.6.1",
4
+ "version": "0.8.0",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -27,20 +27,20 @@
27
27
  "license": "MIT",
28
28
  "dependencies": {
29
29
  "@deepseek-ai/schemastery": "^3.18.1",
30
- "@lmzhen/dsh-evolution-core": "^0.6.1"
30
+ "@lmzhen/dsh-evolution-core": "^0.8.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@deepseek-ai/cordis": "^4.0.1",
34
34
  "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
35
35
  "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
36
- "@lmzhen/dsh-evolution-io": "^0.6.1",
37
- "@lmzhen/dsh-evolution-state": "^0.6.1"
36
+ "@lmzhen/dsh-evolution-io": "^0.8.0",
37
+ "@lmzhen/dsh-evolution-state": "^0.8.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
41
41
  "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
42
- "@lmzhen/dsh-evolution-core": "^0.6.1",
43
- "@lmzhen/dsh-evolution-io": "^0.6.1",
44
- "@lmzhen/dsh-evolution-state": "^0.6.1"
42
+ "@lmzhen/dsh-evolution-core": "^0.8.0",
43
+ "@lmzhen/dsh-evolution-io": "^0.8.0",
44
+ "@lmzhen/dsh-evolution-state": "^0.8.0"
45
45
  }
46
46
  }