PBSOI CISG MVP v1.0 — Impact Engine

/mnt/data/PSMR_Runtime_MVP_v0.8/demo_effect_apply/conflict_demo/workspace/projection_candidates/candidate_c04f4e8b356bd0bdeb21/source · Python repository · evidence-grounded static graph

3
Files
19
Nodes
24
Edges
7
Impact targets
5
Data values
0
State regions
0
Defects
0
Motifs

MVP pipeline

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

v1.0 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": 3,
  "nodes": 19,
  "edges": 24,
  "node_types": {
    "file": 3,
    "function": 2,
    "class": 1,
    "method": 1,
    "boundary_module": 1,
    "data_value": 5,
    "data_sink": 2,
    "boundary_call": 3,
    "data_use": 1
  },
  "edge_types": {
    "contains": 4,
    "imports": 2,
    "defines": 5,
    "contains_data": 3,
    "returns_value": 3,
    "calls": 5,
    "flows_to": 2
  },
  "resolved_local_calls": 2,
  "boundary_calls": 3,
  "findings_by_category": {},
  "findings_by_severity": {},
  "motif_instances": 0,
  "motif_clusters": 0,
  "data_values": 5,
  "phi_nodes": 0,
  "data_edges": 10,
  "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
function5app.py
function5app.py
method5tests/test_app.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 6 of 7 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": "d56cd9c5c97d5342ead7a357a759453315a4ffad50d8ddea3200f9523b0b3a3a", "source_kind": "code"}}normalize_amountnormalize_amount{"id": "fn_6278c5659b6dfdf9", "type": "function", "label": "normalize_amount", "path": "app.py", "module": "app", "symbol": "normalize_amount", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a77d239a65125dc8c13a4a20", "fragment_source_hash": "a8b7db13f6e2771dd05012e37b685a6e81d2d58918e0e249f1c9fd67c41e20ed", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 1, "end_line": 2, "source_hash": "a8b7db13f6e2771dd05012e37b685a6e81d2d58918e0e249f1c9fd67c41e20ed", "source_kind": "code"}, "shape_signature": "shape_6812fdf9000aab68", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}calculate_totalcalculate_total{"id": "fn_6226bd83d14ddff6", "type": "function", "label": "calculate_total", "path": "app.py", "module": "app", "symbol": "calculate_total", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_6e231b913796a1abb5cad524", "fragment_source_hash": "3df1f8af0c46632f5957aac68edcc6c6585059ba845bc5980615a842e06ed3fa", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 5, "end_line": 7, "source_hash": "3df1f8af0c46632f5957aac68edcc6c6585059ba845bc5980615a842e06ed3fa", "source_kind": "code"}, "shape_signature": "shape_b85f53c87b3aca33", "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}}tests/test_app.pytests/test_app.py{"id": "file_5d67b839567bfb64", "type": "file", "label": "tests/test_app.py", "path": "tests/test_app.py", "module": "tests.test_app", "status": "observed", "confidence": 1.0, "evidence": {"path": "tests/test_app.py", "line": 1, "end_line": 4, "source_hash": "5407cdc72d755fe2ba32ece0c5ef0de69d551876919cbe836dd03618278f3c9f", "source_kind": "code"}}AppTestsAppTests{"id": "class_4b3281604304e8cc", "type": "class", "label": "AppTests", "path": "tests/test_app.py", "module": "tests.test_app", "symbol": "AppTests", "status": "observed", "confidence": 1.0, "evidence": {"path": "tests/test_app.py", "line": 3, "end_line": 4, "source_hash": "5407cdc72d755fe2ba32ece0c5ef0de69d551876919cbe836dd03618278f3c9f", "source_kind": "code"}}AppTests.test_totalAppTests.test_total{"id": "fn_1730c95755a9a908", "type": "method", "label": "AppTests.test_total", "path": "tests/test_app.py", "module": "tests.test_app", "symbol": "AppTests.test_total", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8635fccd06afac19266e046a", "fragment_source_hash": "40c8689f4b191f10c4e4e06b93d725833864aff45d210747e0e7ed6cf63f9ad4", "fragment_context_fingerprint": "ctx_a804ab232314d8f18730e1d9", "evidence": {"path": "tests/test_app.py", "line": 4, "end_line": 4, "source_hash": "40c8689f4b191f10c4e4e06b93d725833864aff45d210747e0e7ed6cf63f9ad4", "source_kind": "code"}, "shape_signature": "shape_ca86f933977823f0", "motif_signature": "motif_exact_634a3a10bf84", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}

Node evidence

Click a node.

SSA-like data flow

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

RelationSourceTargetEvidenceStatus
returns_valuevalue#0return@+1app.py:2observed
flows_toamount#0amount#1app.py:6observed
returns_valueamount#1return@+2app.py:7observed
returns_valuetax#0return@+2app.py:7observed
flows_toself#0expr@+0tests/test_app.py:4observed

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

Per-file SHA-256

PathBytesSHA-256
app.py157d56cd9c5c97d5342…
tests/__init__.py0e3b0c44298fc1c14…
tests/test_app.py1525407cdc72d755fe2…

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