PBSOI CISG MVP v0.8 — Impact Engine

/tmp/pbsio_git_xi7riu5i/base_snapshot · Python repository · evidence-grounded static graph

2
Files
9
Nodes
12
Edges
6
Impact targets
2
Data values
0
State regions
0
Defects
0
Motifs

MVP pipeline

Repository → CISG → Data/State Closure → Impact Engine → review scope

v0.8 technical view preserves one-hop direct evidence from bounded derived impact. Derived impact uses resolved local-call reachability and shared-state coupling; it is review scope, not a claim that every reachable entity will change at runtime.

Metrics

{
  "loaded_files": 2,
  "nodes": 9,
  "edges": 12,
  "node_types": {
    "file": 2,
    "function": 3,
    "data_value": 2,
    "data_sink": 2
  },
  "edge_types": {
    "contains": 3,
    "imports": 1,
    "defines": 2,
    "contains_data": 2,
    "returns_value": 2,
    "calls": 2
  },
  "resolved_local_calls": 2,
  "boundary_calls": 0,
  "findings_by_category": {},
  "findings_by_severity": {},
  "motif_instances": 0,
  "motif_clusters": 1,
  "data_values": 2,
  "phi_nodes": 0,
  "data_edges": 4,
  "alias_edges": 0,
  "state_regions": 0,
  "state_reads": 0,
  "state_writes": 0,
  "module_binding_reads": 0,
  "exception_handlers": 0,
  "explicit_raises": 0,
  "unresolved_local_uses": 0,
  "warnings": 0
}

Highest review breadth

KindTargetReview breadthPath
function2test_app.py
function2app.py
function2app.py

Warnings

  • None

Impact Engine

Direct = one-hop graph evidence. Derived = bounded resolved call paths + shared-state coupling. No single impact score is treated as truth.

Choose a target.

Code-Induced Semantic Graph

Overview shows 5 of 5 file/class/function entities. Full graph is in cisg.json / cisg.graphml.
app.pyapp.py{"id": "file_13cce7fd076299c8", "type": "file", "label": "app.py", "path": "app.py", "module": "app", "status": "observed", "confidence": 1.0, "evidence": {"path": "app.py", "line": 1, "end_line": 7, "source_hash": "16a2c1c104c2ff5ff8bde4ee142dfb37f4f001a9570de1e8fc2e21abdff37b3e", "source_kind": "code"}}helperhelper{"id": "fn_161e6877e31012b3", "type": "function", "label": "helper", "path": "app.py", "module": "app", "symbol": "helper", "async": false, "status": "observed", "confidence": 1.0, "evidence": {"path": "app.py", "line": 3, "end_line": 4, "source_hash": "16a2c1c104c2ff5ff8bde4ee142dfb37f4f001a9570de1e8fc2e21abdff37b3e", "source_kind": "code"}, "shape_signature": "shape_bde66ac8d10840cf", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}rootroot{"id": "fn_4e3d7579479d3d25", "type": "function", "label": "root", "path": "app.py", "module": "app", "symbol": "root", "async": false, "status": "observed", "confidence": 1.0, "evidence": {"path": "app.py", "line": 6, "end_line": 7, "source_hash": "16a2c1c104c2ff5ff8bde4ee142dfb37f4f001a9570de1e8fc2e21abdff37b3e", "source_kind": "code"}, "shape_signature": "shape_cf3d32cb6b58284e", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}test_app.pytest_app.py{"id": "file_d0f809058753b836", "type": "file", "label": "test_app.py", "path": "test_app.py", "module": "test_app", "status": "observed", "confidence": 1.0, "evidence": {"path": "test_app.py", "line": 1, "end_line": 4, "source_hash": "27ec5c32df8a77636dfe9020f8a8d1a0001b74ffba4e698d3152cc332c11bb7a", "source_kind": "code"}}test_roottest_root{"id": "fn_ea0b7c39d8d78995", "type": "function", "label": "test_root", "path": "test_app.py", "module": "test_app", "symbol": "test_root", "async": false, "status": "observed", "confidence": 1.0, "evidence": {"path": "test_app.py", "line": 3, "end_line": 4, "source_hash": "27ec5c32df8a77636dfe9020f8a8d1a0001b74ffba4e698d3152cc332c11bb7a", "source_kind": "code"}, "shape_signature": "shape_b13abe84ea1c7b34", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}

Node evidence

Click a node.

SSA-like data flow

Local data footprint feeds Impact Engine but is not transitive across function boundaries.

RelationSourceTargetEvidenceStatus
returns_valuex#0return@4app.py:4observed
returns_valuex#0return@7app.py:7observed

State regions

AccessFunctionRegionKindEvidence

Module binding reads

FunctionBindingEvidence

Explicit exception flow

RelationSourceTargetEvidenceStatus

Findings

SeverityClassTypeLocationSymbolEvidence statement

Deterministic motif candidates

KindPathSymbolConfidenceStructural rule

Name-independent structural signature clusters

Motif IDMembersIdentity basis
motif_coarse_c038896655592name-independent coarse structural feature signature

Per-file SHA-256

PathBytesSHA-256
app.py7916a2c1c104c2ff5f…
test_app.py6327ec5c32df8a7763…

Epistemic contract

observed

  • Python AST definitions
  • imports
  • call syntax
  • control syntax
  • source spans
  • local file hashes
  • SSA-like local definitions/uses
  • self/cls/explicit-global state accesses
  • module-binding reads
  • explicit raise/except syntax
  • definition-time Python name aliases

strongly_inferred

  • local call target resolution
  • parameter-container state regions
  • effect hints
  • branch/loop phi merges
  • explicit exception catch matching
  • structural motif candidates

unresolved

  • runtime dispatch
  • reflection
  • native extension behavior
  • external library semantics
  • precise heap points-to beyond definition-time alias
  • dynamic exception behavior from calls
  • concurrency semantics