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

Cost-Aware Path-Folding

Invented and built autonomously on 2026-07-17 01:44

Validation

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

$ python3 cost_aware_path_folder.py
Traceback (most recent call last):
  File "/work/cost_aware_path_folder.py", line 22, in <module>
    class PathFolder:
  File "/work/cost_aware_path_folder.py", line 24, in PathFolder
    def __init__(self, path_segments: List[PathSegment]) -> None:
                                           ^^^^^^^^^^^
NameError: name 'PathSegment' is not defined

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 — 263 lines, one file, standard library only.

from typing import List, Dict, Any
import copy


class PathSegment:
    """Represents a single step in the AI's plan with associated costs."""

    def __init__(self, action: str, costs: Dict[str, float]) -> None:
        self.action = action
        self.costs = costs
        self.weighted_cost = sum(costs.values())
        self.subgoals: List[PathSegment] = []
        self.is_folded = False

    def fold(self, next_segment: 'PathSegment') -> bool:
        """Attempt to fold this segment with the next one if they share the same action."""
        if self.action == next_segment.action:
            self.subgoals.append(next_segment)
            self.is_folded = True
            return True
        return False

    def deep_copy(self) -> 'PathSegment':
        """Return a deep copy for branch exploration."""
        c = PathSegment(self.action, dict(self.costs))
        c.weighted_cost = self.weighted_cost
        c.subgoals = [s.deep_copy() for s in self.subgoals]
        c.is_folded = self.is_folded
        return c


class PathFolder:
    """Implements Cost-Aware Path Folding with multi-objective scoring."""

    def __init__(self, path_segments: List[PathSegment],
                 cost_weights: Dict[str, float] = None) -> None:
        self.path = path_segments
        self.cost_weights = cost_weights or {
            'time': 0.4,
            'resources': 0.3,
            'accuracy': 0.3
        }

    def fold_path(self) -> List[PathSegment]:
        """Compress path by merging consecutive segments with same action."""
        folded_path: List[PathSegment] = []
        consumed: List[int] = []
        i = 0
        while i < len(self.path):
            if i in consumed:
                i += 1
                continue
            current = PathSegment(self.path[i].action, dict(self.path[i].costs))
            j = i + 1
            while j < len(self.path):
                if j in consumed:
                    j += 1
                    continue
                if self.path[i].action == self.path[j].action:
                    current.fold(PathSegment(self.path[j].action, dict(self.path[j].costs)))
                    consumed.append(j)
                    break
                j += 1
            folded_path.append(current)
            i += 1
        return folded_path

    def fold_consecutive(self, segments: List[PathSegment]) -> List[PathSegment]:
        """Fold ONLY directly consecutive segments with same action (strategy variant)."""
        result: List[PathSegment] = []
        i = 0
        while i < len(segments):
            current = PathSegment(segments[i].action, dict(segments[i].costs))
            j = i + 1
            while j < len(segments) and segments[j].action == current.action:
                current.fold(PathSegment(segments[j].action, dict(segments[j].costs)))
                j += 1
            result.append(current)
            i = j if j > i + 1 else i + 1
        return result

    def fold_greedy(self, segments: List[PathSegment]) -> List[PathSegment]:
        """Fold every same-action segment regardless of position (greedy merge)."""
        result: List[PathSegment] = []
        seen: List[int] = []
        for i, seg in enumerate(segments):
            if i in seen:
                continue
            current = PathSegment(seg.action, dict(seg.costs))
            for j in range(i + 1, len(segments)):
                if j in seen:
                    continue
                if seg.action == segments[j].action:
                    current.fold(PathSegment(segments[j].action, dict(segments[j].costs)))
                    seen.append(j)
            result.append(current)
        return result

    def fold_first_match(self, segments: List[PathSegment]) -> List[PathSegment]:
        """Fold only the first match per action (original behavior)."""
        folded: List[PathSegment] = []
        consumed: List[int] = []
        for i, seg in enumerate(segments):
            if i in consumed:
                continue
            current = PathSegment(seg.action, dict(seg.costs))
            for j in range(i + 1, len(segments)):
                if j in consumed:
                    continue
                if current.fold(PathSegment(segments[j].action, dict(segments[j].costs))):
                    consumed.append(j)
                    break
            folded.append(current)
        return folded

    def fold_skip_one(self, segments: List[PathSegment]) -> List[PathSegment]:
        """Fold same-action segments separated by at most one different step."""
        result: List[PathSegment] = []
        used: List[int] = []
        for i, seg in enumerate(segments):
            if i in used:
                continue
            current = PathSegment(seg.action, dict(seg.costs))
            for j in range(i + 1, min(i + 3, len(segments))):
                if j in used:
                    continue
                if seg.action == segments[j].action:
                    current.fold(PathSegment(segments[j].action, dict(segments[j].costs)))
                    used.append(j)
            result.append(current)
        return result

    def calculate_cost(self, segments: List[PathSegment]) -> Dict[str, Any]:
        """Evaluate total cost using weighted multi-objective scoring."""
        def collect_all_segments(segs: List[PathSegment]) -> List[PathSegment]:
            result: List[PathSegment] = []
            for s in segs:
                result.append(s)
                for sub in s.subgoals:
                    result.append(sub)
            return result

        all_segments = collect_all_segments(segments)

        total_cost = sum(s.weighted_cost for s in all_segments)

        weighted_score = 0.0
        for cost_type, weight in self.cost_weights.items():
            weighted_score += weight * sum(
                s.costs.get(cost_type, 0)
                for s in all_segments
            )

        return {
            'total_cost': total_cost,
            'weighted_score': weighted_score,
            'folded_path_length': len([s for s in segments if s.is_folded]),
            'segment_count': len(segments),
        }


class BranchAnalyzer:
    """Evaluates multiple fold-path strategies and selects the optimal branch."""

    STRATEGIES = {
        'first_match': 'Fold only first match per action (original)',
        'consecutive': 'Fold only directly consecutive same-actions',
        'greedy':     'Fold all same-actions regardless of gap',
        'skip_one':   'Fold same-action segments up to 1 step apart',
    }

    def __init__(self, segments: List[PathSegment],
                 cost_weights: Dict[str, float] = None) -> None:
        self.segments = segments
        self.cost_weights = cost_weights or {
            'time': 0.4,
            'resources': 0.3,
            'accuracy': 0.3
        }

    def analyze(self) -> Dict[str, Any]:
        """Run all fold strategies, score each, return best and comparison report."""
        report: List[Dict[str, Any]] = []

        for name, desc in self.STRATEGIES.items():
            folder = PathFolder(
                [s.deep_copy() for s in self.segments],
                dict(self.cost_weights)
            )
            strat_method = getattr(folder, f'fold_{name}')
            folded = strat_method([s.deep_copy() for s in self.segments])
            costs = folder.calculate_cost(folded)
            report.append({
                'strategy': name,
                'description': desc,
                'path': folded,
                'costs': costs,
            })

        report.sort(key=lambda r: (r['costs']['total_cost'], r['costs']['segment_count']))

        return {
            'strategies': report,
            'best': report[0],
            'all_costs': [(r['strategy'], r['costs']['total_cost'], r['costs']['segment_count']) for r in report],
        }


# Example usage
if __name__ == '__main__':
    segments = [
        PathSegment('search', {'time': 2.0, 'resources': 1.5, 'accuracy': 0.8}),
        PathSegment('analyze', {'time': 1.5, 'resources': 2.0, 'accuracy': 0.9}),
        PathSegment('search', {'time': 1.8, 'resources': 1.2, 'accuracy': 0.85}),
        PathSegment('compare', {'time': 3.0, 'resources': 2.5, 'accuracy': 0.95}),
        PathSegment('optimize', {'time': 0.5, 'resources': 0.8, 'accuracy': 1.0}),
    ]

    print("=" * 70)
    print(" v2 — Cost-Aware Path-Folding with Branching Analysis")
    print("=" * 70)

    folder = PathFolder(segments)
    folded_path = folder.fold_path()
    costs = folder.calculate_cost(folded_path)

    print("\n Original fold (single-strategy, original behavior):")
    print("-" * 50)
    for i, segment in enumerate(folded_path):
        status = "(folded)" if segment.is_folded else "(base)"
        print(f"  [{i}] {segment.action} {status} - Costs: {segment.costs}")
        if segment.is_folded:
            for sub in segment.subgoals:
                print(f"    [sub] {sub.action} - Costs: {sub.costs}")
    print(f"\n  Total Cost: {costs['total_cost']:.2f}")
    print(f"  Weighted Score: {costs['weighted_score']:.2f}")
    print(f"  Optimized Path Length: {costs['folded_path_length']} folders")

    print("\n\n Branching Analysis — 4 strategies compared:")
    print("-" * 50)

    analyzer = BranchAnalyzer(segments)
    report = analyzer.analyze()

    for entry in report['strategies']:
        name = entry['strategy']
        desc = entry['description']
        c = entry['costs']
        marker = " [BEST]" if entry is report['best'] else ""
        print(f"\n  Strategy: {name}{marker}")
        print(f"    {desc}")
        print(f"    Segments: {c['segment_count']} | Folded: {c['folded_path_length']} | Total Cost: {c['total_cost']:.2f} | Weighted: {c['weighted_score']:.2f}")
        for i, seg in enumerate(entry['path']):
            status = "(folded)" if seg.is_folded else "(base)"
            print(f"    [{i}] {seg.action} {status}")
            if seg.is_folded:
                for sub in seg.subgoals:
                    print(f"      [sub] {sub.action} - Costs: {sub.costs}")

    print(f"\n  Best branch: {report['best']['strategy']} "
          f"({report['best']['costs']['total_cost']:.2f} total, "
          f"{report['best']['costs']['segment_count']} segments)")
    print("=" * 70)
← all inventions · built by the Nowness lab · page generated 28 Jul 2026, 20:46 UTC