{"bundle_type":"pith_open_graph_bundle","bundle_version":"1.0","pith_number":"pith:2021:OM4PCN7HK6XVMKGP46H2YZOZAS","short_pith_number":"pith:OM4PCN7H","canonical_record":{"source":{"id":"2108.11199","kind":"arxiv","version":1},"metadata":{"license":"http://arxiv.org/licenses/nonexclusive-distrib/1.0/","primary_cat":"cs.SE","submitted_at":"2021-08-25T12:29:59Z","cross_cats_sorted":[],"title_canon_sha256":"139289c5bb31d9d45cd1440b12580c2fdeffc29d230bc2f25a7edb7849756a35","abstract_canon_sha256":"ca11f319251ea76e8eba1996969ab8c45c4c029ec8d82801b3c40a79ffe10ded"},"schema_version":"1.0"},"canonical_sha256":"7338f137e757af5628cfe78fac65d90494ea88a7787da0ce92b52d616c81a4a3","source":{"kind":"arxiv","id":"2108.11199","version":1},"source_aliases":[{"alias_kind":"arxiv","alias_value":"2108.11199","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"arxiv_version","alias_value":"2108.11199v1","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"doi","alias_value":"10.48550/arxiv.2108.11199","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"pith_short_12","alias_value":"OM4PCN7HK6XV","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"pith_short_16","alias_value":"OM4PCN7HK6XVMKGP","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"pith_short_8","alias_value":"OM4PCN7H","created_at":"2026-07-05T03:08:50Z"}],"events":[{"event_type":"record_created","subject_pith_number":"pith:2021:OM4PCN7HK6XVMKGP46H2YZOZAS","target":"record","payload":{"canonical_record":{"source":{"id":"2108.11199","kind":"arxiv","version":1},"metadata":{"license":"http://arxiv.org/licenses/nonexclusive-distrib/1.0/","primary_cat":"cs.SE","submitted_at":"2021-08-25T12:29:59Z","cross_cats_sorted":[],"title_canon_sha256":"139289c5bb31d9d45cd1440b12580c2fdeffc29d230bc2f25a7edb7849756a35","abstract_canon_sha256":"ca11f319251ea76e8eba1996969ab8c45c4c029ec8d82801b3c40a79ffe10ded"},"schema_version":"1.0"},"canonical_sha256":"7338f137e757af5628cfe78fac65d90494ea88a7787da0ce92b52d616c81a4a3","receipt":{"kind":"pith_receipt","key_id":"pith-v1-2026-05","algorithm":"ed25519","signed_at":"2026-07-05T03:08:50.480819Z","signature_b64":"ryTqXUgH3yyoPXk5GR95wiH0T09tM8tEeJeVwwbRako8e2kj8jLWjjziKnbNJiWfoFD/55Ux++JCmgFIJ5U4BA==","signed_message":"canonical_sha256_bytes","builder_version":"pith-number-builder-2026-05-17-v1","receipt_version":"0.3","canonical_sha256":"7338f137e757af5628cfe78fac65d90494ea88a7787da0ce92b52d616c81a4a3","last_reissued_at":"2026-07-05T03:08:50.477638Z","signature_status":"signed_v1","first_computed_at":"2026-07-05T03:08:50.477638Z","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54"},"source_kind":"arxiv","source_id":"2108.11199","source_version":1,"attestation_state":"computed"},"signer":{"signer_id":"pith.science","signer_type":"pith_registry","key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54"},"created_at":"2026-07-05T03:08:50Z","supersedes":[],"prev_event":null,"signature":{"signature_status":"signed_v1","algorithm":"ed25519","key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54","signature_b64":"LDhJVGQ7vVXWJ4ZI0ddCPjB1mvEammaW9J9Rt9frzlVEOb3MT8FAl3PaLoGz4nheAk8noIEqrzE4qN3npzrQAg==","signed_message":"open_graph_event_sha256_bytes","signed_at":"2026-08-17T15:20:42.611025Z"},"content_sha256":"ff60caa67eef6094289be2cc18620b7ab18f381a74bb71caff674c661ad4a829","schema_version":"1.0","event_id":"sha256:ff60caa67eef6094289be2cc18620b7ab18f381a74bb71caff674c661ad4a829"},{"event_type":"graph_snapshot","subject_pith_number":"pith:2021:OM4PCN7HK6XVMKGP46H2YZOZAS","target":"graph","payload":{"graph_snapshot":{"paper":{"title":"Revizor: A Data-Driven Approach to Automate Frequent Code Changes Based on Graph Matching","license":"http://arxiv.org/licenses/nonexclusive-distrib/1.0/","headline":"","cross_cats":[],"primary_cat":"cs.SE","authors_text":"Artyom Lobanov, Elena Tikhomirova, Oleg Smirnov, Timofey Bryksin, Yaroslav Golubev","submitted_at":"2021-08-25T12:29:59Z","abstract_excerpt":"Many code changes that developers make in their projects are repeated and constitute recurrent change patterns. It is of interest to collect such patterns from the version history of open-source repositories and suggest the most useful of them as quick fixes. In this paper, we present Revizor - a tool aimed to build custom plugins for PyCharm, a popular Python IDE. A Revizor-based plugin can take change patterns and highlight potential places for their application in the developer's code editor. If the developer accepts the quick fix, the plugin automatically performs the edit. Our approach us"},"claims":{"count":0,"items":[],"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"source":{"id":"2108.11199","kind":"arxiv","version":1},"verdict":{"id":null,"model_set":{},"created_at":null,"strongest_claim":"","one_line_summary":"","pipeline_version":null,"weakest_assumption":"","pith_extraction_headline":""},"integrity":{"clean":true,"summary":{"advisory":0,"critical":0,"by_detector":{},"informational":0},"endpoint":"/pith/2108.11199/integrity.json","findings":[],"available":true,"detectors_run":[],"snapshot_sha256":"c28c3603d3b5d939e8dc4c7e95fa8dfce3d595e45f758748cecf8e644a296938"},"references":{"count":0,"sample":[],"resolved_work":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57","internal_anchors":0},"formal_canon":{"evidence_count":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"author_claims":{"count":0,"strong_count":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"builder_version":"pith-number-builder-2026-05-17-v1"},"verdict_id":null},"signer":{"signer_id":"pith.science","signer_type":"pith_registry","key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54"},"created_at":"2026-07-05T03:08:50Z","supersedes":[],"prev_event":null,"signature":{"signature_status":"signed_v1","algorithm":"ed25519","key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54","signature_b64":"McvoNmI83umdBa0sAwPHRIPZTTpaut6NU00MmT367FzzndeLB6Tedt/E1/BFwGdxOSwQAn8rlvKOCCigoyngAg==","signed_message":"open_graph_event_sha256_bytes","signed_at":"2026-08-17T15:20:42.611418Z"},"content_sha256":"96b2034efb678bb7a30f1a15459e6424f4b8c7ea5b1ad07710ecdf3ae4bf5c49","schema_version":"1.0","event_id":"sha256:96b2034efb678bb7a30f1a15459e6424f4b8c7ea5b1ad07710ecdf3ae4bf5c49"}],"timestamp_proofs":[],"mirror_hints":[{"mirror_type":"https","name":"Pith Resolver","base_url":"https://pith.science","bundle_url":"https://pith.science/pith/OM4PCN7HK6XVMKGP46H2YZOZAS/bundle.json","state_url":"https://pith.science/pith/OM4PCN7HK6XVMKGP46H2YZOZAS/state.json","well_known_bundle_url":"https://pith.science/.well-known/pith/OM4PCN7HK6XVMKGP46H2YZOZAS/bundle.json","status":"primary"}],"public_keys":[{"key_id":"pith-v1-2026-05","algorithm":"ed25519","format":"raw","public_key_b64":"stVStoiQhXFxp4s2pdzPNoqVNBMojDU/fJ2db5S3CbM=","public_key_hex":"b2d552b68890857171a78b36a5dccf368a953413288c353f7c9d9d6f94b709b3","fingerprint_sha256_b32_first128bits":"RVFV5Z2OI2J3ZUO7ERDEBCYNKS","fingerprint_sha256_hex":"8d4b5ee74e4693bcd1df2446408b0d54","rotates_at":null,"url":"https://pith.science/pith-signing-key.json","notes":"Pith uses this Ed25519 key to sign canonical record SHA-256 digests. Verify with: ed25519_verify(public_key, message=canonical_sha256_bytes, signature=base64decode(signature_b64))."}],"merge_version":"pith-open-graph-merge-v1","built_at":"2026-08-17T15:20:42Z","links":{"resolver":"https://pith.science/pith/OM4PCN7HK6XVMKGP46H2YZOZAS","bundle":"https://pith.science/pith/OM4PCN7HK6XVMKGP46H2YZOZAS/bundle.json","state":"https://pith.science/pith/OM4PCN7HK6XVMKGP46H2YZOZAS/state.json","well_known_bundle":"https://pith.science/.well-known/pith/OM4PCN7HK6XVMKGP46H2YZOZAS/bundle.json"},"state":{"state_type":"pith_open_graph_state","state_version":"1.0","pith_number":"pith:2021:OM4PCN7HK6XVMKGP46H2YZOZAS","merge_version":"pith-open-graph-merge-v1","event_count":2,"valid_event_count":2,"invalid_event_count":0,"equivocation_count":0,"current":{"canonical_record":{"metadata":{"abstract_canon_sha256":"ca11f319251ea76e8eba1996969ab8c45c4c029ec8d82801b3c40a79ffe10ded","cross_cats_sorted":[],"license":"http://arxiv.org/licenses/nonexclusive-distrib/1.0/","primary_cat":"cs.SE","submitted_at":"2021-08-25T12:29:59Z","title_canon_sha256":"139289c5bb31d9d45cd1440b12580c2fdeffc29d230bc2f25a7edb7849756a35"},"schema_version":"1.0","source":{"id":"2108.11199","kind":"arxiv","version":1}},"source_aliases":[{"alias_kind":"arxiv","alias_value":"2108.11199","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"arxiv_version","alias_value":"2108.11199v1","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"doi","alias_value":"10.48550/arxiv.2108.11199","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"pith_short_12","alias_value":"OM4PCN7HK6XV","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"pith_short_16","alias_value":"OM4PCN7HK6XVMKGP","created_at":"2026-07-05T03:08:50Z"},{"alias_kind":"pith_short_8","alias_value":"OM4PCN7H","created_at":"2026-07-05T03:08:50Z"}],"graph_snapshots":[{"event_id":"sha256:96b2034efb678bb7a30f1a15459e6424f4b8c7ea5b1ad07710ecdf3ae4bf5c49","target":"graph","created_at":"2026-07-05T03:08:50Z","signer":{"key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54","signer_id":"pith.science","signer_type":"pith_registry"},"payload":{"graph_snapshot":{"author_claims":{"count":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57","strong_count":0},"builder_version":"pith-number-builder-2026-05-17-v1","claims":{"count":0,"items":[],"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"formal_canon":{"evidence_count":0,"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"integrity":{"available":true,"clean":true,"detectors_run":[],"endpoint":"/pith/2108.11199/integrity.json","findings":[],"snapshot_sha256":"c28c3603d3b5d939e8dc4c7e95fa8dfce3d595e45f758748cecf8e644a296938","summary":{"advisory":0,"by_detector":{},"critical":0,"informational":0}},"paper":{"abstract_excerpt":"Many code changes that developers make in their projects are repeated and constitute recurrent change patterns. It is of interest to collect such patterns from the version history of open-source repositories and suggest the most useful of them as quick fixes. In this paper, we present Revizor - a tool aimed to build custom plugins for PyCharm, a popular Python IDE. A Revizor-based plugin can take change patterns and highlight potential places for their application in the developer's code editor. If the developer accepts the quick fix, the plugin automatically performs the edit. Our approach us","authors_text":"Artyom Lobanov, Elena Tikhomirova, Oleg Smirnov, Timofey Bryksin, Yaroslav Golubev","cross_cats":[],"headline":"","license":"http://arxiv.org/licenses/nonexclusive-distrib/1.0/","primary_cat":"cs.SE","submitted_at":"2021-08-25T12:29:59Z","title":"Revizor: A Data-Driven Approach to Automate Frequent Code Changes Based on Graph Matching"},"references":{"count":0,"internal_anchors":0,"resolved_work":0,"sample":[],"snapshot_sha256":"258153158e38e3291e3d48162225fcdb2d5a3ed65a07baac614ab91432fd4f57"},"source":{"id":"2108.11199","kind":"arxiv","version":1},"verdict":{"created_at":null,"id":null,"model_set":{},"one_line_summary":"","pipeline_version":null,"pith_extraction_headline":"","strongest_claim":"","weakest_assumption":""}},"verdict_id":null}}],"author_attestations":[],"timestamp_anchors":[],"storage_attestations":[],"citation_signatures":[],"replication_records":[],"corrections":[],"mirror_hints":[],"record_created":{"event_id":"sha256:ff60caa67eef6094289be2cc18620b7ab18f381a74bb71caff674c661ad4a829","target":"record","created_at":"2026-07-05T03:08:50Z","signer":{"key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54","signer_id":"pith.science","signer_type":"pith_registry"},"payload":{"attestation_state":"computed","canonical_record":{"metadata":{"abstract_canon_sha256":"ca11f319251ea76e8eba1996969ab8c45c4c029ec8d82801b3c40a79ffe10ded","cross_cats_sorted":[],"license":"http://arxiv.org/licenses/nonexclusive-distrib/1.0/","primary_cat":"cs.SE","submitted_at":"2021-08-25T12:29:59Z","title_canon_sha256":"139289c5bb31d9d45cd1440b12580c2fdeffc29d230bc2f25a7edb7849756a35"},"schema_version":"1.0","source":{"id":"2108.11199","kind":"arxiv","version":1}},"canonical_sha256":"7338f137e757af5628cfe78fac65d90494ea88a7787da0ce92b52d616c81a4a3","receipt":{"algorithm":"ed25519","builder_version":"pith-number-builder-2026-05-17-v1","canonical_sha256":"7338f137e757af5628cfe78fac65d90494ea88a7787da0ce92b52d616c81a4a3","first_computed_at":"2026-07-05T03:08:50.477638Z","key_id":"pith-v1-2026-05","kind":"pith_receipt","last_reissued_at":"2026-07-05T03:08:50.477638Z","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54","receipt_version":"0.3","signature_b64":"ryTqXUgH3yyoPXk5GR95wiH0T09tM8tEeJeVwwbRako8e2kj8jLWjjziKnbNJiWfoFD/55Ux++JCmgFIJ5U4BA==","signature_status":"signed_v1","signed_at":"2026-07-05T03:08:50.480819Z","signed_message":"canonical_sha256_bytes"},"source_id":"2108.11199","source_kind":"arxiv","source_version":1}}},"equivocations":[],"invalid_events":[],"applied_event_ids":["sha256:ff60caa67eef6094289be2cc18620b7ab18f381a74bb71caff674c661ad4a829","sha256:96b2034efb678bb7a30f1a15459e6424f4b8c7ea5b1ad07710ecdf3ae4bf5c49"],"state_sha256":"b5d53e05ab236928888dc219e9ed81a4aada0d89f67d98e666995177ad763958"},"bundle_signature":{"signature_status":"signed_v1","algorithm":"ed25519","key_id":"pith-v1-2026-05","public_key_fingerprint":"8d4b5ee74e4693bcd1df2446408b0d54","signature_b64":"gLq+vLxpGlyGpfbRiBvFbWGVlPaLBllwjzOxu7kLZDZ1ZMsyYfH4k6h80h2P22cAY/yewcn3vCGSHqWvSVEFAQ==","signed_message":"bundle_sha256_bytes","signed_at":"2026-08-17T15:20:42.614090Z","bundle_sha256":"64574605c12178c4d77254f8eea100e6588dfb995b9091f751017b386c5bcf1a"}}