-
Notifications
You must be signed in to change notification settings - Fork 29
fix: schema backwards compat for attributes_skipped key #277
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The Assessment.to_dict() was outputting "attributes_not_assessed" but the assessment-schema.json requires "attributes_skipped". This caused leaderboard validation to fail with "'attributes_skipped' is a required property". Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…hema Reports generated before the key rename use attributes_not_assessed. Use anyOf in the JSON schema to accept either key name, ensuring backwards compatibility for existing leaderboard submissions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
📈 Test Coverage Report
Coverage calculated from unit tests only |
AgentReady Code Review - PR #277Executive SummaryOverall Assessment: ✅ APPROVED - Excellent backwards compatibility fix with strong test coverage Impact on AgentReady Score: Neutral to positive (fixes schema validation, improves interoperability) 🎯 Attribute Compliance Analysis✅ Strong Performance
📋 Technical ReviewSchema Design (assessment-schema.json:10-17, 60-71)✅ Excellent backwards compatibility pattern Changes:
Strengths:
Recommendation: Consider adding deprecation notice in schema description for future removal planning (e.g., "will be removed in v2.0.0") Model Serialization (assessment.py:91)✅ Correct key mapping - "attributes_not_assessed": self.attributes_not_assessed,
+ "attributes_skipped": self.attributes_not_assessed,Strengths:
Note: The internal property name could be renamed in a future major version for consistency, but leaving it unchanged is the right call for backwards compatibility. Deserialization Fallback (learning_service.py:148-150)✅ Robust fallback handling attributes_not_assessed=assessment_data.get(
"attributes_skipped", assessment_data.get("attributes_not_assessed", 0)
)Strengths:
Alternative consideration: Could use a helper function for readability: def _get_attributes_skipped(data: dict) -> int:
"""Get skipped attributes count, checking both key names."""
return data.get("attributes_skipped", data.get("attributes_not_assessed", 0))Not required for this PR - just a suggestion for future refactoring Test Coverage (test_learning_service.py)✅ Comprehensive backwards compatibility testing Added test:
Strengths:
🔒 Security Analysis✅ No security issues identified
🏆 Best Practices Assessment✅ Excellent Execution
📊 Impact on AgentReady Self-AssessmentProjected Score Impact: +0.5 points (80.0 → 80.5)Improvements:
Affected Attributes:
🎬 RecommendationsRequired Before Merge: None ✅All checks pass, implementation is production-ready. Future Enhancements (Optional):
Example Deprecation Warning (for future PR):"attributes_not_assessed": {
"type": "integer",
"minimum": 0,
"maximum": 25,
"description": "DEPRECATED: Use 'attributes_skipped' instead. This key will be removed in v2.0.0.",
"deprecated": true
}✅ Final VerdictAPPROVED - Merge when CI passes Rationale:
Blocking Issues: None 📚 ReferencesReview performed by AgentReady Code Review Agent |
## [2.25.2](v2.25.1...v2.25.2) (2026-02-06) ### Bug Fixes * schema backwards compat for attributes_skipped key ([#277](#277)) ([841bcc4](841bcc4))
|
🎉 This PR is included in version 2.25.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# [2.10.0](v2.9.0...v2.10.0) (2026-02-06) ### Bug Fixes * add bounded retry logic for LLM rate limit handling ([ambient-code#205](https://github.com/jeremyeder/agentready/issues/205)) ([6ecb786](6ecb786)), closes [ambient-code#104](https://github.com/jeremyeder/agentready/issues/104) * **assessors:** FileSizeLimitsAssessor now respects .gitignore ([ambient-code#248](https://github.com/jeremyeder/agentready/issues/248)) ([eaaecc2](eaaecc2)), closes [ambient-code#245](https://github.com/jeremyeder/agentready/issues/245) * **ci:** add permissions for leaderboard PR comment posting ([ambient-code#276](https://github.com/jeremyeder/agentready/issues/276)) ([33252e4](33252e4)) * **ci:** use gh pr view for fork PR number lookup in coverage comment ([ambient-code#253](https://github.com/jeremyeder/agentready/issues/253)) ([1688362](1688362)) * Correct pre-commit template path in PrecommitHooksFixer ([ambient-code#269](https://github.com/jeremyeder/agentready/issues/269)) ([c42a3c9](c42a3c9)) * disable attestations for Test PyPI to avoid conflict ([ambient-code#155](https://github.com/jeremyeder/agentready/issues/155)) ([a33e3cd](a33e3cd)), closes [pypa/#action-pypi-publish](https://github.com/jeremyeder/agentready/issues/action-pypi-publish) * downgrade docker/metadata-action to v5 and fix shellcheck warnings ([12f5509](12f5509)) * enable Harbor task filtering for smoketest support ([ambient-code#222](https://github.com/jeremyeder/agentready/issues/222)) ([f780188](f780188)) * leaderboard workflow and SSH URL support ([ambient-code#147](https://github.com/jeremyeder/agentready/issues/147)) ([de28cd0](de28cd0)) * make E2E test timeouts configurable and add sensitive directory test ([ambient-code#206](https://github.com/jeremyeder/agentready/issues/206)) ([27e87e5](27e87e5)), closes [ambient-code#104](https://github.com/jeremyeder/agentready/issues/104) [ambient-code#192](https://github.com/jeremyeder/agentready/issues/192) * prevent unauthorized message for non-command comments ([ambient-code#262](https://github.com/jeremyeder/agentready/issues/262)) ([84c6f69](84c6f69)) * rename research report in data directory ([b8ddfdc](b8ddfdc)) * resolve all test suite failures - achieve zero failures ([ambient-code#180](https://github.com/jeremyeder/agentready/issues/180)) ([990fa2d](990fa2d)), closes [ambient-code#148](https://github.com/jeremyeder/agentready/issues/148) [ambient-code#147](https://github.com/jeremyeder/agentready/issues/147) [ambient-code#145](https://github.com/jeremyeder/agentready/issues/145) * resolve broken links and workflow failures ([ambient-code#160](https://github.com/jeremyeder/agentready/issues/160)) ([fbf5cf7](fbf5cf7)) * resolve YAML syntax error in continuous-learning workflow ([ambient-code#172](https://github.com/jeremyeder/agentready/issues/172)) ([3d40fcc](3d40fcc)) * resolve YAML syntax error in update-docs workflow and add actionlint ([ambient-code#173](https://github.com/jeremyeder/agentready/issues/173)) ([97b06af](97b06af)) * schema backwards compat for attributes_skipped key ([ambient-code#277](https://github.com/jeremyeder/agentready/issues/277)) ([841bcc4](841bcc4)) * skip PR comments for external forks to prevent permission errors ([ambient-code#163](https://github.com/jeremyeder/agentready/issues/163)) ([2a29fb8](2a29fb8)) * update --version flag to show correct version and research report date ([ambient-code#221](https://github.com/jeremyeder/agentready/issues/221)) ([5a85abb](5a85abb)) * **workflows:** ensure post-comment step runs after Claude Code Action ([b087e5c](b087e5c)) * **workflows:** handle all event types in agentready-dev workflow ([9b942bf](9b942bf)) * **workflows:** improve error handling and logging for comment posting ([9ea1e6b](9ea1e6b)) * **workflows:** improve issue number extraction and add debug step ([ecd896b](ecd896b)) * **workflows:** remove if:always() to test step execution ([ff0bb12](ff0bb12)) * **workflows:** simplify post-comment step condition ([1bbf40a](1bbf40a)) ### Features * add ambient-code/agentready to leaderboard ([ambient-code#148](https://github.com/jeremyeder/agentready/issues/148)) ([621152e](621152e)) * add dgutride/odh-dashboard to leaderboard ([ambient-code#268](https://github.com/jeremyeder/agentready/issues/268)) ([f4911b2](f4911b2)) * add Harbor Terminal-Bench comparison for agent effectiveness ([ambient-code#199](https://github.com/jeremyeder/agentready/issues/199)) ([a56e318](a56e318)) * add Memory MCP server allow list to repository settings ([ambient-code#203](https://github.com/jeremyeder/agentready/issues/203)) ([41d87bb](41d87bb)) * add quay/quay to leaderboard ([ambient-code#162](https://github.com/jeremyeder/agentready/issues/162)) ([d6e8df0](d6e8df0)) * Add weekly research update skill and automation ([ambient-code#145](https://github.com/jeremyeder/agentready/issues/145)) ([7ba17a6](7ba17a6)) * **assessors:** support AGENTS.md and @ references in CLAUDEmdAssessor ([ambient-code#265](https://github.com/jeremyeder/agentready/issues/265)) ([450ec25](450ec25)), closes [ambient-code#244](https://github.com/jeremyeder/agentready/issues/244) * automate PyPI publishing with trusted publishing (OIDC) ([ambient-code#154](https://github.com/jeremyeder/agentready/issues/154)) ([71f4632](71f4632)), closes [pypa/#action-pypi-publish](https://github.com/jeremyeder/agentready/issues/action-pypi-publish) * consolidate GitHub Actions workflows by purpose ([ambient-code#217](https://github.com/jeremyeder/agentready/issues/217)) ([717ca6b](717ca6b)), closes [ambient-code#221](https://github.com/jeremyeder/agentready/issues/221) * container support ([ambient-code#171](https://github.com/jeremyeder/agentready/issues/171)) ([c6874ea](c6874ea)) * convert AgentReady assessment to on-demand workflow ([ambient-code#213](https://github.com/jeremyeder/agentready/issues/213)) ([b5a1ce0](b5a1ce0)), closes [ambient-code#191](https://github.com/jeremyeder/agentready/issues/191) * enhance assessors with multi-language support and security ([ambient-code#200](https://github.com/jeremyeder/agentready/issues/200)) ([85712f2](85712f2)), closes [#10](#10) * Harbor framework integration for Terminal-Bench evaluations ([ambient-code#202](https://github.com/jeremyeder/agentready/issues/202)) ([d73a8c8](d73a8c8)), closes [#4](#4) [ambient-code#178](https://github.com/jeremyeder/agentready/issues/178) [ambient-code#178](https://github.com/jeremyeder/agentready/issues/178) * integrate ACL file with Claude Code Action allowed_users ([ambient-code#261](https://github.com/jeremyeder/agentready/issues/261)) ([fe52489](fe52489)) * Redesign homepage features with two-column layout and research links ([ambient-code#189](https://github.com/jeremyeder/agentready/issues/189)) ([570087d](570087d)), closes [ambient-code#187](https://github.com/jeremyeder/agentready/issues/187) * replace markdown-link-check with lychee for link validation ([ambient-code#177](https://github.com/jeremyeder/agentready/issues/177)) ([f1a4545](f1a4545)) * Terminal-Bench eval harness (MVP Phase 1) ([ambient-code#178](https://github.com/jeremyeder/agentready/issues/178)) ([d06bab4](d06bab4)), closes [ambient-code#171](https://github.com/jeremyeder/agentready/issues/171) * **workflows:** add comment posting for [@agentready-dev](https://github.com/agentready-dev) agent ([5dff614](5dff614)) ### Performance Improvements * implement lazy loading for heavy CLI commands ([ambient-code#151](https://github.com/jeremyeder/agentready/issues/151)) ([6a7cd4e](6a7cd4e))
Summary
Assessment.to_dict()now serializesattributes_skippedto match the JSON schema (was outputtingattributes_not_assessed)anyOfto accept eitherattributes_skippedorattributes_not_assessedfor backwards compatibility with existing reportsContext
Leaderboard validation was failing because submitted reports used
attributes_not_assessedbut the schema requiredattributes_skipped. This fixes both directions: new reports use the canonical key, and old reports still validate.Test Plan
🤖 Generated with Claude Code