feat(knowledge): model + effort routing enter the register, dated [skip-docs]
C1: two entries the optimization lens can cite for the model/effort axis, both read out of the primary sources in this session rather than from the plan's 2026-07-14 summary of them. Verifying corrected the plan's own numbers: effort is settable in SIX places, not five (/effort, the /model slider, --effort, CLAUDE_CODE_EFFORT_LEVEL, settings effortLevel, skill/subagent frontmatter), the default is high on every supporting model EXCEPT Opus 4.7 (xhigh), and the level count is model-dependent (Opus 4.6 and Sonnet 4.6 have no xhigh). - BP-MODEL-001: subagent `model` defaults to `inherit`, so a subagent that names no model costs what the session costs; the documented pin is overridable by CLAUDE_CODE_SUBAGENT_MODEL and per-invocation model - BP-MODEL-002: effort is an axis separate from model choice, and higher is not universally better (`max` "may show diminishing returns and is prone to overthinking") - both carry the 2026-07-07 model/effort blog as a corroborating source with a real `published` date, so B1's evidence-age rule has teeth: measured stale with reasons ['evidence-age'] at a reference date 378 days past publication while their verified stamps are pristine. The docs pages themselves get NO published date — they carry none, and guessing one in the field whose whole job is dating evidence is the lie the rule exists to catch - new blanket guard: every corroborating source must carry a parseable published date. Without it newestEvidenceMs() returns null and the entry stays green on evidence of any age — a silent hole. Seen red against its own defect before it was trusted - knowledge-refresh-cli's stale branch no longer expires on every new entry: its reference date has to sit after every `verified` stamp, was bumped once for BP-SUB-001 and would have needed a third bump now, so it moves to a date no stamp can reach Register 14 -> 16 entries. Frozen v5.0.0 snapshots untouched (no scanner output changes); suite 1579/0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NKjojcdYYiCQP5AudUyQ5e
This commit is contained in:
parent
542f983178
commit
e861e63a7b
3 changed files with 103 additions and 11 deletions
|
|
@ -73,6 +73,40 @@ describe('bundled register integrity (Verifiseringsplikt)', () => {
|
|||
assert.match(e.source.verified, /^\d{4}-\d{2}-\d{2}$/, `${e.id} bad verified date`);
|
||||
}
|
||||
});
|
||||
|
||||
// A corroborating source without a published date is a SILENT hole: newestEvidenceMs()
|
||||
// returns null for the entry and the evidence-age rule cannot judge evidence it cannot
|
||||
// date, so the entry stays green on evidence of any age. Assert the blanket invariant,
|
||||
// not the entries that happen to have one today.
|
||||
it('every corroborating source carries a published date (evidence-age rule has teeth)', () => {
|
||||
for (const e of reg.entries) {
|
||||
if (!Array.isArray(e.sources)) continue;
|
||||
e.sources.forEach((s, i) => {
|
||||
assert.match(
|
||||
String(s && s.published),
|
||||
/^\d{4}-\d{2}-\d{2}$/,
|
||||
`${e.id} sources[${i}] (${s && s.url}) missing a parseable published date`
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
it('carries the model-routing entries (C1), each dated by a published source', () => {
|
||||
for (const id of ['BP-MODEL-001', 'BP-MODEL-002']) {
|
||||
const e = getEntry(reg, id);
|
||||
assert.ok(e, `${id} missing from the bundled register`);
|
||||
assert.equal(e.confidence, 'confirmed', `${id} must be confirmed`);
|
||||
assert.equal(e.category, 'model-fit', `${id} wrong category`);
|
||||
assert.ok(
|
||||
e.source.url.startsWith('https://code.claude.com/docs/'),
|
||||
`${id} primary source must be the official docs, got ${e.source.url}`
|
||||
);
|
||||
assert.ok(
|
||||
Array.isArray(e.sources) && e.sources.some((s) => s.published),
|
||||
`${id} must carry a corroborating source with a published date (B1 evidence-age rule)`
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('validateRegister (negative cases)', () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue