Requested by
@bernhardberger in the PR #343 thread (2026-08-28), as a follow-up to issue #342 / PR #343 (growth-nudge floor via minNudgeContextPercent).
Problem
PR #343 makes the T1 growth-nudge floor the global minNudgeContextPercent (default 15% of the model context window). Mixed-model installations cannot express per-model floors with a single global percent:
| Model |
Advertised window |
Intended floor |
Floor at global 37.5% |
Floor at default 15% |
| OpenAI GPT-5.6 (native) |
400,000 |
150,000 |
150,000 ✓ |
60,000 (reproduces #342 early nudges) |
openrouter/z-ai/glm-5.3 |
1,048,576 (OpenRouter API) |
200,000 |
393,216 (≈2× intended) |
157,286 |
No single global value satisfies both: 37.5% delays the GLM floor to nearly twice the intended value; 15% puts native OpenAI back at 60K.
Proposed API
An optional per-model growth floor, following the existing modelMaxLimits / modelMinLimits style:
modelMinNudgeLimits?: Record<string, number | `${number}%`>
Keyed by provider/model (same keying as the existing model-limit overrides). Values may be absolute tokens or "X%" of that model's context window.
Precedence order (as proposed by the requester)
1. modelMinNudgeLimits[provider/model]
2. minNudgeContextPercent × model context
3. existing growth-only behavior when model context is unknown
This keeps the simple 15% default and lets mixed-model installations use exact token or percentage floors. The existing modelMinLimits keeps its current turn/iteration-reminder meaning (unchanged).
Implementation notes
- Floor computation lives in
injectCompressNudges (minNudgeFloorTokens / overMinNudgeFloor, lib/messages/inject/inject.ts).
- New config field needs validation/merging in
lib/config.ts + dcp.schema.json + docs (CONFIGURATION.md, README.md), following the modelMinLimits pattern.
- Tests: extend the
issue #342: block in tests/inject.test.ts (per-model floor wins over global percent; percent value resolves against the per-model window; unknown-model-context fallback unchanged).
Scope
Does not block PR #343 — the global floor ships first; this is a follow-up enhancement. Recorded here so the mixed-context limitation is tracked before #343 merges.
Requested by
@bernhardberger in the PR #343 thread (2026-08-28), as a follow-up to issue #342 / PR #343 (growth-nudge floor via
minNudgeContextPercent).Problem
PR #343 makes the T1 growth-nudge floor the global
minNudgeContextPercent(default 15% of the model context window). Mixed-model installations cannot express per-model floors with a single global percent:openrouter/z-ai/glm-5.3No single global value satisfies both: 37.5% delays the GLM floor to nearly twice the intended value; 15% puts native OpenAI back at 60K.
Proposed API
An optional per-model growth floor, following the existing
modelMaxLimits/modelMinLimitsstyle:Keyed by
provider/model(same keying as the existing model-limit overrides). Values may be absolute tokens or"X%"of that model's context window.Precedence order (as proposed by the requester)
This keeps the simple 15% default and lets mixed-model installations use exact token or percentage floors. The existing
modelMinLimitskeeps its current turn/iteration-reminder meaning (unchanged).Implementation notes
injectCompressNudges(minNudgeFloorTokens/overMinNudgeFloor,lib/messages/inject/inject.ts).lib/config.ts+dcp.schema.json+ docs (CONFIGURATION.md,README.md), following themodelMinLimitspattern.issue #342:block intests/inject.test.ts(per-model floor wins over global percent; percent value resolves against the per-model window; unknown-model-context fallback unchanged).Scope
Does not block PR #343 — the global floor ships first; this is a follow-up enhancement. Recorded here so the mixed-context limitation is tracked before #343 merges.