Conversation
Plan 101 deterministic implementation. Stage 9 previously reloaded skills from the candidate's primary lens, so a language-primary packet got language + core guidance at Stage 7 but only language false-positive rules at verification. That made any skill edit unmeasurable: final-finding changes could come from the verifier seeing a different rule set rather than from the edited skill. Provenance foundation: - Add projectedSkillIds(), deriving ordered unique ids from the actual BuiltPrompt projection; per-skill-truncated entries count, total-cap omitted entries do not. - Stamp exact per-pass ids on Stage-7 findings, follow-up hints, and uncertainties; on Stage-8 system findings; and inherit the selected source item's list in uncertainty promotion. Ensemble/adaptive pooling keeps item-level provenance instead of requiring equality or unioning. - Resolve Stage 9 only through skillsById(producedBy.skillIds) plus a defensive language filter. Unknown and language-incompatible ids are dropped and reported; lensId is no longer a selection input; empty provenance is authoritative and omits the whole guidance block (p9.6). Missing provenance is malformed rather than inferred. - Emit verifier_skill_provenance with requested/resolved/dropped/unknown /language-incompatible ids and no repository content. Bundled-skill content (candidate arm, no inventory changes): - Standardize every language check on the five-field owner matrix and drop the meta-only Examples sections; core Examples stay because they are distinct worked cases. - Make False Positives and Safe Patterns readable standalone, since Stage 9 projects them without Checks. - Correct objective mismatches: JavaScript module interop, Python mutable-default/None/exact-unit/subprocess/TOCTOU examples, and Solidity oracle validation (no deprecated answeredInRound). - Fix the silent Solidity Stage-8 truncation; all skills now project untruncated at Stages 7, 8, and 9, with owner tests covering per-skill and canonical composite projections. Evals: - Add marker-free TypeScript/Python/Solidity semantic fixtures proving base pass, feature build, exact positive failure, and safe-control pass, with pinned toolchains and pre-registered three-draw arms. Paid baseline, isolated candidate arms, and the integration non-inferiority comparison remain pending owner authorization; the language revisions are candidate-arm content, not accepted evidence. The real-repository eval-diversity guard stays open. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
codegenie review
No credible findings. CoveragePartial review: 486 hunks were not reviewed because budget was exhausted before dispatch.
Needs Human Attention
StatsModel: anthropic claude-opus-4-8 high No FindingsNo credible findings were found. |
Summary
Adds first-class Rust, Python, Solidity, and JavaScript support across Codegenie's review pipeline, then fixes two pipeline defects that made large reviews unreliable and skill quality unmeasurable.
Language support is end-to-end rather than file-extension detection alone: each language receives syntax-aware repository context, deterministic likely-test discovery, dedicated review guidance, isolated lens projection, packaged grammar support, and production-path validation.
On top of that, Plan 100 stops large PRs from silently discarding the entire planner output, and Plan 101 makes Stage 9 verify each candidate with the exact skill set that produced it — a prerequisite for trusting any future skill comparison. The PR also adds standalone PR-head CI and completes the Plan 99 correctness follow-up.
Multi-language support (Plan 98)
lang/rust,lang/python,lang/solidity, andlang/javascript.lang/typescriptto TypeScript/TSX so JavaScript no longer receives TypeScript-only guidance.test,tests, and__tests__for other languages.actionlint, pinned pnpm, frozen scripts-enabled installation, typechecking, tests, and package builds.Rust
Supports attribute-aware functions, structs, unions, enums, traits, implementations, methods, modules, constants, macros, imports, and contextual impl ownership. Blanket impls use a deterministic
impl targetowner rather than treating a type parameter as nominal. Likely tests cover sibling<stem>_test.rsand nearest Cargo-packagetests/<stem>.rsconventions.Python
Supports decorated and multiline functions/classes, async functions and methods, nested ownership, imports, colon-bounded signatures, and common
test_*.py/*_test.pyconventions. Signatures and classification remain correct when non-ASCII or astral Unicode precedes a declaration.Solidity
Supports contracts, abstract contracts, interfaces, libraries, functions, modifiers, constructors, fallback/receive handlers, events, errors, types, contract-owned state values/constants, imports, overload-safe identity, and deterministic default Foundry test discovery.
JavaScript
Provides distinct JavaScript language identity and
lang/javascriptguidance for.js,.jsx,.mjs, and.cjs. Coverage includes functions, generators, arrow/function expressions, classes and class expressions, callable fields, JSX, ESM imports/re-exports, literal CommonJSrequire, bounded signatures, and JavaScript test conventions without admitting TypeScript-only syntax or checks.Language correctness follow-up (Plan 99)
Planner coverage survival and dispatch resilience (Plan 100)
Two production runs against a 90-file / 213-hunk PR reproduced total plan loss: the planner produced an accurate risk map, but its coverage entries were dropped as unknown hunk IDs,
coverageended empty, dispatch degraded to path-alphabetical order, and the runtime budget expired with the entire risk core unreviewed — reporting "No credible findings" for a money-path PR.The root cause was that full-length hunk hashes were too expensive to keep path-associated inside a compacted planner dossier, so compaction discarded the association and the model addressed its targets by path instead.
Exact skill provenance and bundled-skill revision (Plan 101)
Stage 9 previously reloaded skills from the candidate's primary lens. A language-primary packet therefore received language plus both core skills at Stage 7, but only the language skill's false-positive rules at verification. That made any skill edit unmeasurable: a change in final findings could come from the verifier seeing a different rule set rather than from the edited skill.
Provenance foundation
projectedSkillIds(), deriving ordered unique ids from the actual prompt projection; per-skill-truncated entries count, total-cap-omitted entries do not.skillsById(candidate.producedBy.skillIds)plus a defensive language filter. Unknown and language-incompatible ids are dropped and reported,lensIdis never a selection input, empty provenance is authoritative and omits the entire guidance block (p9.6), and missing provenance is treated as malformed rather than inferred.verifier_skill_provenancetelemetry with requested/resolved/dropped/unknown/language-incompatible ids and no repository content.Bundled-skill content
Examplessections; the two core skills keep theirs because they hold distinct worked cases.False PositivesandSafe Patternsreadable standalone, since Stage 9 projects them withoutChecks.None/exact-unit/subprocess/TOCTOU examples, and Solidity oracle validation (no deprecatedansweredInRound).Semantic skill evals
evals/skill-semantics/, separate from the fake transport suite. Each proves a passing base, buildable feature, exact reproducible positive failure, and passing safe control against pinned toolchains, with pre-registered three-draw model arms.Operational changes
review.maxTimein minutes (--max-timestill overrides per run), with an explicit supported maximum and long-timeout handling. This replaces the previous internalreview.timeoutMskey; since the config schema is strict, acodegenie.tomlthat set the old undocumented key must switch tomaxTime.pidependency.Validation
pnpm run check: passingpnpm build: passingCompatibility and measurement notes
The new default-enabled skills and the JavaScript/TypeScript guidance split intentionally change the Stage 5 inventory/content,
LensRegistry.registryHash(), and model-call cache identity. Branch development exposed two recorded language measurement boundaries: the Rust/Python/Solidity skill landing, followed by the atomic JavaScript skill plus TypeScript narrowing. Measurements crossing either boundary are not directly comparable prompt/cache regimes.Plan 99 changes deterministic repository context only and adds no further skill, prompt-template, registry-hash, dependency, workflow, review-budget, provider, or LLM response-schema boundary.
Plan 100 changes hunk-ID form and planner/dispatch behavior; the identity-parity artifacts pin exact semantic parity across that migration.
Plan 101 establishes a further boundary. The bundled-skill revision rotates every affected
contentShaand the registry hash, and the foundation commit bundles both corrected Stage-9 input selection and thep9.6prompt-construction change — later prompt-byte comparisons must not attribute all Stage-9 differences to provenance alone. The paid current-skill baseline, isolated candidate arms, and integration non-inferiority comparison are not run and pending explicit authorization, so the language-skill revisions in this PR are candidate-arm content rather than accepted measurement evidence. The open real-repository eval-diversity guard remains open: the new semantic fixtures are synthetic and do not close it.