CAJAL-4B / analyze_topics.py
Agnuxo's picture
Add analyze_topics.py
d28aa91 verified
import json, os, re
# Existing site titles (from API fetch)
existing = """Proactive Key Rotation via Secret Sharing without Consensus Pause or Disruption
Two-Phase Commit with Early Termination and Parallel Vote Aggregation
CFFS-Based Fast Finality for Heterogeneous Validator Set Sizes in Practice
Stochastic Liveness Analysis under Dynamic Network Churn and Variable Latency
Private Transactionpool within BFT via Vector Commitments and Zero-Knowledge
Rollup-Centric Consensus with Data Availability Sampling Fraud Proofs
Energy-Optimized BFT for Constrained Edge Devices with Duty-Cycle Awareness
BFT for Duty-Cycled Low-Power IoT Networks with Scheduled Radio Wakeups
Location-Aware Validator Assignment with Distance-Weighted Scoring for BFT
Cross-Shard Execution with Super-Block Atomic Commitment and Finality
Modular Finality as a Service Layer for Existing BFT Consensus Engines
zkSNARK-Proven Correctness of Leader Rotation in Permissionless Consensus
Time-Lock Puzzle Based Leader Scheduling for Quorum Fairness in BFT
Governance Parameter Updates via Time-Locked Delegation and Vote Escrow
Threshold MPC for Validator Key Management with Proactive Secret Rotation
Post-Quantum BFT via WOTS+ Signatures and Merkleized State Digests
EigenLayer Restaking for Multi-Chain Shared Security with Validator Churn
Multi-Shard Atomic Operations with Threshold Signatures and Watcher Nodes
Formal Synthesis of BFT Protocols from Temporal Logic Specifications
ML-Based Byzantine Detector using Gradient Anomaly and Behavior Profiling""".split('\n')
existing_set = set(existing)
# Parse TOPICS from harness.py
with open('harness.py','r') as f:
content = f.read()
m = re.search(r'TOPICS\s*=\s*\[(.*?)\]', content, re.DOTALL)
if not m:
print('TOPICS not found')
exit(1)
topics_raw = m.group(1)
# Split by commas, strip quotes
topics = []
for t in topics_raw.split(','):
t = t.strip()
if not t: continue
# Remove surrounding quotes
if t.startswith('"') or t.startswith("'"):
t = t[1:]
if t.endswith('"') or t.endswith("'"):
t = t[:-1]
topics.append(t.strip())
print(f'Total TOPICS in harness: {len(topics)}')
overlaps = [t for t in topics if t in existing_set]
safe = [t for t in topics if t not in existing_set]
print(f'Overlap with existing site papers: {len(overlaps)}')
for t in overlaps:
print(f' DUPLICATE: {t}')
# Already used in harness results
used = set()
if os.path.exists('harness_results.jsonl'):
with open('harness_results.jsonl') as f:
for line in f:
try:
r = json.loads(line)
used.add(r.get('topic',''))
except:
pass
print(f'\nAlready used in harness results: {len(used)}')
print('Used topics:')
for t in sorted(used):
print(f' {t}')
remaining_safe = [t for t in safe if t not in used]
print(f'\nRemaining safe (not overlapping site AND not yet attempted): {len(remaining_safe)}')
print('Remaining safe topics:')
for t in remaining_safe:
print(f' {t}')
# Suggest new topics to add if needed
if len(remaining_safe) < 14:
print(f'\nWARNING: Only {len(remaining_safe)} safe topics remain. Need to add more to reach 50 total new papers.')
print('Suggested new topics (BFT-related, not overlapping):')
new_topics = [
"Adaptive Val Set Size with Load-Aware Scaling in BFT",
"Geo-Partitioned Consensus with bounded latency using Satellite Links",
"BFT Middleware for Serverless Functions with Stateless Validation",
"Cross-Domain BFT via Trust Expressors and Signature Bridge",
"Zero-Knowledge Proofs for BFT State Validation at Scale",
"Economic Finality Gadget for BFT with Slashing Bond Insurance",
"Hardware Security Module Integration for BFT Leader Signing",
"AI-Driven Node Reputation with Multi-Armed Bandit Selection",
"BFT for Autonomous Vehicle Fleets with Edge Computing",
"Privacy-Preserving BFT via Homomorphic Encryption and MPC",
]
for t in new_topics:
print(f' - {t}')