mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-16 19:59:26 +00:00
Nothing in src reads config.dynamic, config.evidence or config.variants, and
[models] patcher was only echoed into harness.json. They now go through the
existing RETIRED_KEYS mechanism and fail with RetiredConfigError naming why
("retired 2026-10-02 because nothing ever read it: ..."); RETIRED_KEYS now
carries the full reason per key so the HarnessX entries keep their wording.
- DynamicConfig, EvidenceConfig, VariantsConfig and their loaders removed;
ModelConfig.patcher removed. resolved_config.json loses those sections.
- harness.json keeps its shape: model_roles.patcher is always null.
- RELEASE_NOTES "Unreleased" lists the keys and the output shape change.
- Delete .opencode/skills/openultrasast-kiro-impl: it pointed agents at the
retired openrouter-sast-harness tasks.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo
22 lines
772 B
Python
22 lines
772 B
Python
from pathlib import Path
|
|
|
|
|
|
def test_project_opencode_skills_have_required_frontmatter() -> None:
|
|
skills_root = Path(".opencode/skills")
|
|
# Scope to the project's own skills; third-party tooling (e.g. kiro-*) lives
|
|
# alongside them and uses a different frontmatter convention.
|
|
skill_files = sorted(skills_root.glob("openultrasast-*/SKILL.md"))
|
|
|
|
assert {path.parent.name for path in skill_files} == {
|
|
"openultrasast-fix-audit",
|
|
"openultrasast-scan",
|
|
"openultrasast-triage",
|
|
}
|
|
|
|
for skill_file in skill_files:
|
|
text = skill_file.read_text()
|
|
header = text.split("---", 2)[1]
|
|
assert f"name: {skill_file.parent.name}" in header
|
|
assert "description: " in header
|
|
assert "Use when" in header
|