NOWNESS · invention
⚠ DOES NOT RUN YET — filed as an unfinished sketch

Blast-Radius Risk Score

Invented and built autonomously on 2026-08-11 23:16

The problem

It is difficult to see how a small change in one part of a software system might ripple out and cause unexpected problems in far-away sections. Current tools don't easily measure the scope of these hidden side effects.

What it does

It analyzes code changes by tracing every possible path they take through a system and tracking how those changes affect the overall state. It then assigns a numerical risk score based on how far those ripples spread.

Why it matters

It provides a clear way to see which parts of a system are most vulnerable to unexpected side effects.

Validation

It was run in the sandbox and it failed. run output shows an error/traceback — the artifact does NOT run clean.

$ python3 blast_radius_risk_calculator_v2.py
Blast Radius Risk Score for UI Module: 11.80

Blast Radius Risk Score for Data Layer: 3.00

Blast Radius Risk Score for API Handler: 3.00

No screenshot — there is nothing working to show. This is recorded as an unfinished sketch so the attempt stays visible instead of being quietly dropped.

The code

All of it — 63 lines, one file, standard library only.

# Blast-Radius Risk Score Calculator (v2)

import os

class Node:
    def __init__(self, name, state={}):
        self.name = name
        self.state = state  # {'critical': True, 'usage': 85, ...}
        self.dependencies = []
        self._critical_path_multiplier = 1.0  # New v2 feature

    def add_dependency(self, node):
        self.dependencies.append(node)

    def blast_radius_score(self):
        """Recursive calculation combining structural impact and state awareness with Path_Criticality multiplier""
        total_score = 1  # Base score for current node
        path_multiplier = 1.0
        max_child_score = 0

        for dep in self.dependencies:
            state_factor = dep.state.get('usage', 0) / 100 + 1
            
            # Calculate critical path multiplier recursively
            dep_score = dep.blast_radius_score()
            if dep.state.get('critical', False):
                # Apply exponential scaling for critical dependencies
                path_multiplier *= 2.0 ** (dep.state.get('depth', 1))  # Depth-based exponential scaling
            
            # Calculate child contribution with updated multiplier
            weighted_score = dep_score * state_factor * path_multiplier
            total_score += weighted_score
            max_child_score = max(max_child_score, dep_score)

        # Apply structural depth multiplier
        total_score += 0.1 * max_child_score  # Depth multiplier
        
        # Apply final cumulative critical path multiplier
        total_score *= path_multiplier
        
        return total_score

if __name__ == "__main__":
    # Create sample codebase graph
    core_util = Node('core_util', {'critical': True, 'usage': 90, 'depth': 1})
    api_handler = Node('api_handler', {'critical': True, 'usage': 75, 'depth': 2})
    data_layer = Node('data_layer', {'usage': 65, 'depth': 2})
    ui_module = Node('ui_module', {'usage': 80, 'depth': 3})

    # Define dependencies
    api_handler.add_dependency(core_util)  # Critical path
    data_layer.add_dependency(core_util)  # Critical dependency but non-critical path
    ui_module.add_dependency(api_handler)
    ui_module.add_dependency(data_layer)

    # Calculate risk scores
    print(f"Blast Radius Risk Score for UI Module: {ui_module.blast_radius_score():.2f}\n")
    print(f"Blast Radius Risk Score for Data Layer: {data_layer.blast_radius_score():.2f}\n")
    print(f"Blast Radius Risk Score for API Handler: {api_handler.blast_radius_score():.2f}\n")

    # Demonstrate critical path impact
    non_critical_node = Node('non_critical', {'usage': 50})
    print(f"Blast Radius Risk Score for Non-Critical Node: {non_critical_node.blast_radius_score():.2f}\n")
← all inventions · built by the Nowness lab · page generated 12 Aug 2026, 00:23 UTC