Grading observability, caching & emit-skill (Memo 110) - #60
Merged
Conversation
Phase 1 (Memo 110): kill grading-spec version drift (Befund E). - new src/data/specVersion.mjs as the single canonical GRADING_SPEC_VERSION - ModuleApi.getSpecVersion() reads the one source - fix 20 src comments + package description + 11 template frontmatters - repo-hygiene lint now flags any drifted gradingSpec/<x.y.z> literal - SpecVersion.test.mjs guards the single source Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase 2 (Memo 110): test data is no longer re-fetched every run (Befund A). - DataPretest.run() reads persisted test-N.json (read-cache, default-on); only the live FETCH is skipped, the gate is always recomputed - force:true bypasses the cache; fromCache + dataAt (data stamp) surfaced - classifier extracted to #classifyResults (shared live/cache path) - optional inter-fetch throttle (throttleMs, opt-in, default 0) - DataPretest tests isolate islands per test; +cache/force/throttle tests Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase 3 (Memo 110): close the emitted-prompt torso (Befund C/D/G).
- templates: dead {{OUTPUT_SCHEMA_REF}} -> inline {{OUTPUT_SCHEMA_BLOCK}};
drop the duplicate Files-to-Read block + empty neutral Persona render
- AreaPromptLoader.loadArea/loadAllAreas take a substitution context:
#deriveFiles emits REAL file paths; a NAME-token pass fills
{{NAMESPACE}}/{{TOOL_NAME}}/{{SCHEMA_NAME}}; a surviving token is a hard
APL-010 error (no torso reaches a subagent)
- back-compat: without a context the legacy placeholders are kept
- tests for substitution fill + APL-010 + back-compat
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Phase 5 (Memo 110): code-side Befund-I alignment. - I-2: about-namespace gate structural-valid -> stable (strict Spec-21 pre-condition; the code pulls up). Graph version 1.2.0. - I-4: single-test/tools-aggregate-schema/tools-aggregate-namespace/ about-namespace classified `both` (deterministic gate + non-det LLM round) per spec 04/08; new `both` classification value - I-5: VALID_BLOCKED_REASONS raised to the canonical 7-value set (grading-spec 08); ProviderProof imports it — one source, no divergence - tests updated for the corrected gate + classification Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #59.
Phases (grading side)
src/data/specVersion.mjssingle canonicalGRADING_SPEC_VERSION;ModuleApi.getSpecVersion()reads it; 20 src comments + package description + 11 template frontmatters fixed; repo-hygiene lint now flags driftedgradingSpec/<x.y.z>.DataPretest.run()read-cache (default-on, only the live fetch skipped, gate always recomputed) +forcebypass + optionalthrottleMs; classifier extracted to#classifyResults(shared live/cache).{{OUTPUT_SCHEMA_REF}}→ inline{{OUTPUT_SCHEMA_BLOCK}}, duplicate Files block + empty neutral Persona removed;AreaPromptLoadersubstitutions (real file paths + NAME tokens, APL-010 no-torso guard; back-compat without context).stable(graph 1.2.0);bothclassification for single-test/tools-aggregate-*;VALID_BLOCKED_REASONSraised to the canonical 7-value set (ProviderProof imports it — single source).Bump to 2.4.0 for the coordinated release (flowmcp-cli pin follows).
Tests: 801/801 pass,
lint:hygienePASS.🤖 Generated with Claude Code