PBSOI CISG MVP v1.0 — Impact Engine

/mnt/data/PBSOI_CISG_MVP_v1.0/fragment_demo_v1/stable/target · Python repository · evidence-grounded static graph

1
Files
31
Nodes
40
Edges
12
Impact targets
10
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": 1,
  "nodes": 31,
  "edges": 40,
  "node_types": {
    "file": 1,
    "function": 10,
    "data_value": 10,
    "data_sink": 10
  },
  "edge_types": {
    "contains": 10,
    "defines": 10,
    "contains_data": 10,
    "returns_value": 10
  },
  "resolved_local_calls": 0,
  "boundary_calls": 0,
  "findings_by_category": {},
  "findings_by_severity": {},
  "motif_instances": 0,
  "motif_clusters": 1,
  "data_values": 10,
  "phi_nodes": 0,
  "data_edges": 20,
  "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
function0app.py
function0app.py
function0app.py
function0app.py
function0app.py
function0app.py
function0app.py
function0app.py
function0app.py
function0app.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 11 of 11 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": 29, "source_hash": "1a4cc0eff210e0c7e0cf010366394c51c88882ed6e2517c130c54bb86354f013", "source_kind": "code"}}f0f0{"id": "fn_2ecebf4bcf31eacc", "type": "function", "label": "f0", "path": "app.py", "module": "app", "symbol": "f0", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e27d6eea7a480fbf2ec03c92", "fragment_source_hash": "a40b99e802c15736f0d52f536587fe070827e059f2ccbf4be6002c61f4eea979", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 1, "end_line": 2, "source_hash": "a40b99e802c15736f0d52f536587fe070827e059f2ccbf4be6002c61f4eea979", "source_kind": "code"}, "shape_signature": "shape_0614d3c684b2dd94", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f1f1{"id": "fn_79b13a5724d0b243", "type": "function", "label": "f1", "path": "app.py", "module": "app", "symbol": "f1", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_10189f10eed74075ad9049ca", "fragment_source_hash": "6eb223cd51fdd74c7d68d81bca9e6e3b6bcf7647beabe2aefd40bef6de3f6eb6", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 4, "end_line": 5, "source_hash": "6eb223cd51fdd74c7d68d81bca9e6e3b6bcf7647beabe2aefd40bef6de3f6eb6", "source_kind": "code"}, "shape_signature": "shape_bde66ac8d10840cf", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f2f2{"id": "fn_7dfbf5c9f791acce", "type": "function", "label": "f2", "path": "app.py", "module": "app", "symbol": "f2", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ffff593e223d43de6d89e922", "fragment_source_hash": "b29239dfc422ae2a5157f4dc70bcff56c15d54b1e370915f1f4031c296b4e7d5", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 7, "end_line": 8, "source_hash": "b29239dfc422ae2a5157f4dc70bcff56c15d54b1e370915f1f4031c296b4e7d5", "source_kind": "code"}, "shape_signature": "shape_17841751b3a44beb", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f3f3{"id": "fn_328e6508b0d626a0", "type": "function", "label": "f3", "path": "app.py", "module": "app", "symbol": "f3", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_49509581d746f8835d225e46", "fragment_source_hash": "99f29205fbf2ca5cfe985927bb7dbbd9a70bf689eb3f63b8f9f9e314b437c69a", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 10, "end_line": 11, "source_hash": "99f29205fbf2ca5cfe985927bb7dbbd9a70bf689eb3f63b8f9f9e314b437c69a", "source_kind": "code"}, "shape_signature": "shape_8c4d67c1d7ee4bec", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f4f4{"id": "fn_ed7e539cdf0e39ff", "type": "function", "label": "f4", "path": "app.py", "module": "app", "symbol": "f4", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d04a4fd1ff3b9075aa5db263", "fragment_source_hash": "4d512738baa7ce66b04ac30d54dcf7bb3163f0c7df50142f347eadee0c5b32dc", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 13, "end_line": 14, "source_hash": "4d512738baa7ce66b04ac30d54dcf7bb3163f0c7df50142f347eadee0c5b32dc", "source_kind": "code"}, "shape_signature": "shape_18f097afeada0091", "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}}f5f5{"id": "fn_03ac8544d8e37989", "type": "function", "label": "f5", "path": "app.py", "module": "app", "symbol": "f5", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1d5f77b2b8ef2623853f5800", "fragment_source_hash": "c3ed14726292056a1c7808ac074cf59e876ace0dd4c302d30bb8856baee30a1e", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 16, "end_line": 17, "source_hash": "c3ed14726292056a1c7808ac074cf59e876ace0dd4c302d30bb8856baee30a1e", "source_kind": "code"}, "shape_signature": "shape_0c1b2ce2042d19a2", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f6f6{"id": "fn_c9971abc96845a7f", "type": "function", "label": "f6", "path": "app.py", "module": "app", "symbol": "f6", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_7c8563873f697e8cce89030e", "fragment_source_hash": "69669f841df9e6dbec7b4654742883538f8941f3573eb5183949f66131873d42", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 19, "end_line": 20, "source_hash": "69669f841df9e6dbec7b4654742883538f8941f3573eb5183949f66131873d42", "source_kind": "code"}, "shape_signature": "shape_86d6c1801ac417b5", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f7f7{"id": "fn_2d32cca1ecb4c19f", "type": "function", "label": "f7", "path": "app.py", "module": "app", "symbol": "f7", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3cea8948782fe65df22d9ddc", "fragment_source_hash": "a398d35764a0e50ac32f7f16dfa0eeccbde037070a95d322aa63814dca1df527", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 22, "end_line": 23, "source_hash": "a398d35764a0e50ac32f7f16dfa0eeccbde037070a95d322aa63814dca1df527", "source_kind": "code"}, "shape_signature": "shape_4a5d4e51668a335a", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f8f8{"id": "fn_e28cd0e614b49897", "type": "function", "label": "f8", "path": "app.py", "module": "app", "symbol": "f8", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_78d1d6a026139435a9f3cdbe", "fragment_source_hash": "74b1fc96de3b7f14ed64b538d36a34d76266ff56b7a73d756281df54993c521c", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 25, "end_line": 26, "source_hash": "74b1fc96de3b7f14ed64b538d36a34d76266ff56b7a73d756281df54993c521c", "source_kind": "code"}, "shape_signature": "shape_d2041aaa91b58866", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}f9f9{"id": "fn_b9d92b9c1cd37864", "type": "function", "label": "f9", "path": "app.py", "module": "app", "symbol": "f9", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_89fe312896de66341688fd9d", "fragment_source_hash": "3bcfb8cbf72f54543c9bd6182b0ca921a3ce669ade9bd38770bf3ede60095077", "fragment_context_fingerprint": "ctx_9f20ffb551ac0ae80098d2ca", "evidence": {"path": "app.py", "line": 28, "end_line": 29, "source_hash": "3bcfb8cbf72f54543c9bd6182b0ca921a3ce669ade9bd38770bf3ede60095077", "source_kind": "code"}, "shape_signature": "shape_ea8cf458cf5fe890", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}, "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6"}

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@+1app.py:2observed
returns_valuex#0return@+1app.py:5observed
returns_valuex#0return@+1app.py:8observed
returns_valuex#0return@+1app.py:11observed
returns_valuex#0return@+1app.py:14observed
returns_valuex#0return@+1app.py:17observed
returns_valuex#0return@+1app.py:20observed
returns_valuex#0return@+1app.py:23observed
returns_valuex#0return@+1app.py:26observed
returns_valuex#0return@+1app.py:29observed

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_fca123bd72d610name-independent coarse structural feature signature

Per-file SHA-256

PathBytesSHA-256
app.py2931a4cc0eff210e0c7…

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