feat(automation): enforce assessment scope and document activation blockers

This commit is contained in:
cesnimda
2026-10-30 09:40:12 +01:00
parent 140e182516
commit 750d76317c
22 changed files with 7065 additions and 12 deletions
+11 -2
View File
@@ -61,8 +61,17 @@ def validate_config(root, config):
def filesystem_rules(root, config):
repo = Path(config['repository']).resolve()
rules = {':root':'deny', ':minimal':'read', repo.as_posix():'write',
assessment = config.get('assessmentReportDirectory')
rules = {':root':'deny', ':minimal':'read', repo.as_posix():'read' if assessment else 'write',
Path(config['workerTemp']).resolve().as_posix():'write'}
if assessment:
if assessment != 'docs/automation/stages/PHASE-10':
raise ValueError('Invalid assessment report directory')
for name in (assessment, '.artifacts/orchestrator-probes'):
path = (repo/name).resolve()
if not path.is_relative_to(repo):
raise ValueError('Assessment output escapes repository')
rules[path.as_posix()] = 'write'
for name in config.get('toolReadRoots',[]):
path = Path(name).resolve()
if path == Path(path.anchor) or path == Path.home():
@@ -94,7 +103,7 @@ def permission_args(root, config, command):
def binding(root,config):
value = {k:v for k,v in config.items() if k != 'executionPolicy'}
for name in ('local_mode.py','controller.py','Probe-JobjaktSandbox.ps1'):
for name in ('local_mode.py','controller.py','assessment_adapter.py','Probe-JobjaktSandbox.ps1'):
source = Path(root)/name
if source.exists():
value[name+'Sha256'] = hashlib.sha256(source.read_bytes()).hexdigest()