technical-debt-engine-runtime 1.0.1__tar.gz → 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/PKG-INFO +1 -1
  2. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/pyproject.toml +1 -1
  3. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_cli/main.py +1 -1
  4. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/dependency_health.py +3 -2
  5. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/policies/generation-1.json +1 -1
  6. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/runtime.py +1 -1
  7. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/technical_debt_engine_runtime.egg-info/PKG-INFO +1 -1
  8. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_cli.py +2 -2
  9. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_coverage.py +1 -1
  10. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_dependency_health.py +11 -1
  11. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_public_policy_configuration.py +2 -2
  12. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_runtime.py +1 -1
  13. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/README.md +0 -0
  14. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/setup.cfg +0 -0
  15. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_cli/__init__.py +0 -0
  16. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/__init__.py +0 -0
  17. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/analyzer_discovery.py +0 -0
  18. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/assessment.py +0 -0
  19. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/baseline.py +0 -0
  20. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/code_size.py +0 -0
  21. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/complexity.py +0 -0
  22. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/configuration.py +0 -0
  23. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/coverage.py +0 -0
  24. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/differential.py +0 -0
  25. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/docker_artifact.py +0 -0
  26. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/evidence_store.py +0 -0
  27. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/execution.py +0 -0
  28. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/maintainability.py +0 -0
  29. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/models.py +0 -0
  30. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/policies/__init__.py +0 -0
  31. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/policy.py +0 -0
  32. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/profiles/__init__.py +0 -0
  33. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/profiles/minimal.json +0 -0
  34. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/profiles/standard.json +0 -0
  35. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/query.py +0 -0
  36. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/registries.py +0 -0
  37. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/release_bundle.py +0 -0
  38. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/release_candidate.py +0 -0
  39. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/release_certification.py +0 -0
  40. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/release_publication.py +0 -0
  41. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/release_qualification.py +0 -0
  42. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/repository_qualification.py +0 -0
  43. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/runtime_qualification.py +0 -0
  44. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/__init__.py +0 -0
  45. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/assessment-decision-evidence.json +0 -0
  46. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/assessment-evidence.json +0 -0
  47. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/capability-evidence.json +0 -0
  48. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/common.schema.json +0 -0
  49. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/differential-evidence.json +0 -0
  50. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/policy-evidence.json +0 -0
  51. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/schemas/repository-qualification-evidence.json +0 -0
  52. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/software_assurance.py +0 -0
  53. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/trend.py +0 -0
  54. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/tde_runtime/trusted_delivery.py +0 -0
  55. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/technical_debt_engine_runtime.egg-info/SOURCES.txt +0 -0
  56. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/technical_debt_engine_runtime.egg-info/dependency_links.txt +0 -0
  57. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/technical_debt_engine_runtime.egg-info/entry_points.txt +0 -0
  58. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/technical_debt_engine_runtime.egg-info/requires.txt +0 -0
  59. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/src/technical_debt_engine_runtime.egg-info/top_level.txt +0 -0
  60. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_baseline.py +0 -0
  61. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_build_reproducibility.py +0 -0
  62. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_capability_platform.py +0 -0
  63. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_code_size.py +0 -0
  64. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_complexity.py +0 -0
  65. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_docker_artifact.py +0 -0
  66. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_evidence_store.py +0 -0
  67. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_execution.py +0 -0
  68. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_policy.py +0 -0
  69. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_public_artifacts.py +0 -0
  70. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_query.py +0 -0
  71. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_release_bundle.py +0 -0
  72. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_release_candidate.py +0 -0
  73. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_release_certification.py +0 -0
  74. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_release_publication.py +0 -0
  75. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_release_qualification.py +0 -0
  76. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_runtime_qualification.py +0 -0
  77. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_software_assurance.py +0 -0
  78. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_trend.py +0 -0
  79. {technical_debt_engine_runtime-1.0.1 → technical_debt_engine_runtime-1.0.2}/tests/test_trusted_delivery.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: technical-debt-engine-runtime
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Technical Debt Engine runtime foundation API
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: radon==6.0.1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "technical-debt-engine-runtime"
7
- version = "1.0.1"
7
+ version = "1.0.2"
8
8
  description = "Technical Debt Engine runtime foundation API"
9
9
  requires-python = ">=3.11"
10
10
  dependencies = ["radon==6.0.1"]
@@ -29,7 +29,7 @@ from tde_runtime.repository_qualification import (QualificationRegistry,
29
29
  from tde_runtime.differential import AssessmentBaselineRegistry, DifferentialEngine, DifferentialError
30
30
 
31
31
 
32
- CLI_VERSION = "1.0.1"
32
+ CLI_VERSION = "1.0.2"
33
33
  GENERATION = "1"
34
34
 
35
35
 
@@ -99,6 +99,8 @@ def _nuget(root: Path, timeout: int, settings: Mapping[str, Any] | None = None)
99
99
  if not dotnet: return _record("NuGet", "dotnet", sorted(set(direct)), None, None, None, {"id": "dotnet", "version": "UNAVAILABLE"}, "", [_limitation("dependency_health.dotnet.unavailable", "dotnet was not found on PATH")])
100
100
  try: selected_framework = _nuget_framework(settings)
101
101
  except ValueError as error: return _configuration_failed("NuGet", "dotnet", str(error))
102
+ if selected_framework and not any(selected_framework in _project_frameworks(project) for project in projects):
103
+ return _configuration_failed("NuGet", "dotnet", f"configured nugetFramework '{selected_framework}' is not declared by any project")
102
104
  raw, outdated, transitive, limitations = [], [], [], []
103
105
  for project in projects:
104
106
  try:
@@ -131,8 +133,7 @@ def _nuget_framework(settings: Mapping[str, Any] | None) -> str | None:
131
133
 
132
134
 
133
135
  def _nuget_project(dotnet: str, root: Path, project: Path, framework: str | None, timeout: int) -> tuple[str, list[str], list[str]]:
134
- if framework and (declared := _project_frameworks(project)) and framework not in declared:
135
- raise ValueError(f"{project}: configured nugetFramework '{framework}' is not declared by the project")
136
+ framework = framework if framework in _project_frameworks(project) else None
136
137
  command = [dotnet, "package", "list", "--project", str(project), "--outdated", "--include-transitive", "--format", "json"]
137
138
  if framework: command.extend(["--framework", framework])
138
139
  completed = subprocess.run(command, cwd=root, capture_output=True, text=True, timeout=timeout, check=False)
@@ -6,7 +6,7 @@
6
6
  "description": "Default, language-independent Generation 1 qualification policy.",
7
7
  "supportedCapabilities": ["code_size", "complexity", "coverage", "dependency_health"],
8
8
  "supportedSchemas": ["1.0.0"],
9
- "supportedRuntimeVersions": ["0.2.0", "1.0.0rc1", "1.0.0rc2", "1.0.0rc3", "1.0.0", "1.0.1"],
9
+ "supportedRuntimeVersions": ["0.2.0", "1.0.0rc1", "1.0.0rc2", "1.0.0rc3", "1.0.0", "1.0.1", "1.0.2"],
10
10
  "rules": [
11
11
  {"id": "code_size.repository_lines", "type": "threshold", "capability": "code_size", "metric": "code_size.code_lines", "operator": "greater_than", "threshold": {"warning": 25000, "blocking": 50000}, "severity": {"warning": "WARNING", "blocking": "BLOCKING"}, "enabled": true, "rationale": "Large repositories require deliberate decomposition without treating established product repositories as a blocking condition."},
12
12
  {"id": "complexity.maximum", "type": "threshold", "capability": "complexity", "metric": "complexity.cyclomatic.maximum", "operator": "greater_than", "threshold": {"warning": 15, "blocking": 30}, "severity": {"warning": "WARNING", "blocking": "BLOCKING"}, "enabled": true, "rationale": "High cyclomatic complexity impedes safe change; the blocking threshold accommodates the current measured maximum while retaining a warning signal."},
@@ -20,7 +20,7 @@ from .execution import CapabilityExecutionEngine
20
20
  from .runtime_qualification import RuntimeQualificationEngine
21
21
  from .schemas import SchemaRegistry
22
22
 
23
- RUNTIME_VERSION = "1.0.1"
23
+ RUNTIME_VERSION = "1.0.2"
24
24
  EVIDENCE_SCHEMA_VERSION = "1.0.0"
25
25
 
26
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: technical-debt-engine-runtime
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Technical Debt Engine runtime foundation API
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: radon==6.0.1
@@ -41,8 +41,8 @@ class CliFoundationTests(unittest.TestCase):
41
41
  code, output = self.invoke("--format", "json", "--version")
42
42
  self.assertEqual(ExitCode.SUCCESS, code)
43
43
  version = json.loads(output)
44
- self.assertEqual("1.0.1", version["cliVersion"])
45
- self.assertEqual("1.0.1", version["runtimeVersion"])
44
+ self.assertEqual("1.0.2", version["cliVersion"])
45
+ self.assertEqual("1.0.2", version["runtimeVersion"])
46
46
  self.assertEqual("1.0.0", version["schemaVersion"])
47
47
  self.assertEqual("1", version["generation"])
48
48
 
@@ -101,7 +101,7 @@ class CoverageBlackBoxTests(unittest.TestCase):
101
101
 
102
102
  def test_policy_threshold_uses_coverage_without_runtime_specific_policy_logic(self) -> None:
103
103
  (self.root / "coverage.xml").write_text(COBERTURA, encoding="utf-8")
104
- policy = {"identifier": "coverage-policy", "version": "1.0.0", "scope": "repository", "owner": "tests", "description": "coverage threshold", "supportedCapabilities": ["coverage"], "supportedSchemas": ["1.0.0"], "supportedRuntimeVersions": ["1.0.1"], "rules": [{"id": "minimum-line-coverage", "type": "threshold", "capability": "coverage", "metric": "coverage.line_coverage", "operator": "less_than", "threshold": {"warning": 80, "blocking": 60}, "severity": {"warning": "WARNING", "blocking": "BLOCKING"}, "enabled": True, "rationale": "coverage floor"}]}
104
+ policy = {"identifier": "coverage-policy", "version": "1.0.0", "scope": "repository", "owner": "tests", "description": "coverage threshold", "supportedCapabilities": ["coverage"], "supportedSchemas": ["1.0.0"], "supportedRuntimeVersions": ["1.0.2"], "rules": [{"id": "minimum-line-coverage", "type": "threshold", "capability": "coverage", "metric": "coverage.line_coverage", "operator": "less_than", "threshold": {"warning": 80, "blocking": 60}, "severity": {"warning": "WARNING", "blocking": "BLOCKING"}, "enabled": True, "rationale": "coverage floor"}]}
105
105
  path = self.root / "policy.json"; path.write_text(json.dumps(policy), encoding="utf-8")
106
106
  code, result = self.invoke("--policy", str(path), "assess", "--capability", "coverage", str(self.root))
107
107
  self.assertEqual(ExitCode.FAILED, code)
@@ -71,7 +71,7 @@ class DependencyHealthBlackBoxTests(unittest.TestCase):
71
71
 
72
72
  def test_unknown_dependency_and_policy_are_evaluated(self) -> None:
73
73
  self.project(missing=True); self.npm({})
74
- policy = {"identifier": "dependency-policy", "version": "1.0.0", "scope": "repository", "owner": "tests", "description": "dependency threshold", "supportedCapabilities": ["dependency_health"], "supportedSchemas": ["1.0.0"], "supportedRuntimeVersions": ["1.0.1"], "rules": [{"id": "unknown", "type": "threshold", "capability": "dependency_health", "metric": "dependency_health.unknown_dependencies", "operator": "greater_than", "threshold": {"warning": 1, "blocking": 1}, "severity": {"warning": "WARNING", "blocking": "BLOCKING"}, "enabled": True, "rationale": "unknown dependencies"}]}
74
+ policy = {"identifier": "dependency-policy", "version": "1.0.0", "scope": "repository", "owner": "tests", "description": "dependency threshold", "supportedCapabilities": ["dependency_health"], "supportedSchemas": ["1.0.0"], "supportedRuntimeVersions": ["1.0.2"], "rules": [{"id": "unknown", "type": "threshold", "capability": "dependency_health", "metric": "dependency_health.unknown_dependencies", "operator": "greater_than", "threshold": {"warning": 1, "blocking": 1}, "severity": {"warning": "WARNING", "blocking": "BLOCKING"}, "enabled": True, "rationale": "unknown dependencies"}]}
75
75
  path = self.root / "policy.json"; path.write_text(json.dumps(policy), encoding="utf-8")
76
76
  code, result = self.invoke("--policy", str(path), "assess", "--capability", "dependency_health", str(self.root))
77
77
  self.assertEqual(ExitCode.FAILED, code)
@@ -116,6 +116,16 @@ class DependencyHealthBlackBoxTests(unittest.TestCase):
116
116
  ecosystem = result["evidence"]["adapterResults"][0]["evidence"]["ecosystems"][0]
117
117
  self.assertEqual(["Example"], ecosystem["outdatedDependencies"])
118
118
 
119
+ def test_nuget_framework_is_scoped_to_projects_that_declare_it(self) -> None:
120
+ app = self.root / "app.csproj"; tests = self.root / "tests.csproj"
121
+ app.write_text('<Project><PropertyGroup><TargetFrameworks>net10.0-maccatalyst;net10.0-windows10.0.19041.0</TargetFrameworks></PropertyGroup><ItemGroup><PackageReference Include="App" Version="1.0.0" /></ItemGroup></Project>', encoding="utf-8")
122
+ tests.write_text('<Project><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Tests" Version="1.0.0" /></ItemGroup></Project>', encoding="utf-8")
123
+ (self.root / ".tde.yml").write_text("capabilities:\n dependency_health:\n nugetFramework: net10.0-windows10.0.19041.0\n", encoding="utf-8")
124
+ payload = {"projects": [{"frameworks": [{"topLevelPackages": [], "transitivePackages": []}]}]}
125
+ self.tool("dotnet", 'if [ "$1" = "--version" ]; then echo "10.0"; else case "$*" in *app.csproj*--framework\ net10.0-windows10.0.19041.0*) printf "%s\\n" \'' + json.dumps(payload) + '\';; *tests.csproj*) case "$*" in *--framework*) exit 1;; *) printf "%s\\n" \'' + json.dumps(payload) + '\';; esac;; *) exit 1;; esac; fi\n')
126
+ code, _ = self.assess()
127
+ self.assertEqual(ExitCode.SUCCESS, code)
128
+
119
129
  def test_nuget_rejects_framework_not_declared_by_project(self) -> None:
120
130
  (self.root / "app.csproj").write_text('<Project><PropertyGroup><TargetFramework>net10.0</TargetFramework></PropertyGroup><ItemGroup><PackageReference Include="Example" Version="1.0.0" /></ItemGroup></Project>', encoding="utf-8")
121
131
  (self.root / ".tde.yml").write_text("capabilities:\n dependency_health:\n nugetFramework: net10.0-windows10.0.19041.0\n", encoding="utf-8")
@@ -51,7 +51,7 @@ class PublicPolicyConfigurationTests(unittest.TestCase):
51
51
  "identifier": "example.code-size", "version": "2026.1", "scope": "repository",
52
52
  "owner": "example", "description": "Example organization policy.",
53
53
  "supportedCapabilities": ["code_size"], "supportedSchemas": ["1.0.0"],
54
- "supportedRuntimeVersions": ["1.0.1"],
54
+ "supportedRuntimeVersions": ["1.0.2"],
55
55
  "rules": [{"id": "example.code-size.lines", "type": "threshold", "capability": "code_size",
56
56
  "metric": "code_size.code_lines", "operator": "greater_than",
57
57
  "threshold": {"warning": threshold, "blocking": threshold + 1000},
@@ -93,7 +93,7 @@ class PublicPolicyConfigurationTests(unittest.TestCase):
93
93
  *evidence["assessment"]["capabilityExecutions"]]:
94
94
  self.assertEqual("1.0.0", item["schema"]["version"])
95
95
  self.assertEqual("1", item["schema"]["compatibilityVersion"])
96
- self.assertEqual("1.0.1", item["schema"]["runtimeVersion"])
96
+ self.assertEqual("1.0.2", item["schema"]["runtimeVersion"])
97
97
  record = next((location / "evidence").glob("*.json"))
98
98
  persisted = json.loads(record.read_text(encoding="utf-8"))
99
99
  persisted["evidence"]["policyEvidence"]["schema"]["version"] = "999.0.0"
@@ -61,7 +61,7 @@ class RuntimeFoundationTests(unittest.TestCase):
61
61
 
62
62
  def test_context_contains_canonical_runtime_values(self) -> None:
63
63
  result = Runtime().execute(self.root)
64
- self.assertEqual("1.0.1", result.context.runtime_version)
64
+ self.assertEqual("1.0.2", result.context.runtime_version)
65
65
  self.assertEqual("1.0.0", result.context.schema_version)
66
66
  self.assertTrue(result.context.execution_id.startswith("execution."))
67
67
  self.assertEqual("content_digest", result.context.candidate["identityType"])