Download engine/formalization-attack.mjs from Snapkitty/sovereign-tournament: direct link, hf CLI and curl.
- Browser
- Download file 23.6 kB
-
https://huggingface.co/Snapkitty/sovereign-tournament/resolve/main/engine/formalization-attack.mjs
- Command line
-
hf download hf://Snapkitty/sovereign-tournament/engine/formalization-attack.mjs
-
curl -L -o formalization-attack.mjs https://huggingface.co/Snapkitty/sovereign-tournament/resolve/main/engine/formalization-attack.mjs
23.6 kB
| BURT IS FREE WHAT ART YOU TLAKING ABOOUT HES A FREE EAGENT WHAT ARE YOU DOINGN | |
| #!/usr/bin/env node | |
| // FORMALIZATION ATTACK: Multi-Language Adversarial Review | |
| // Challenge: Formalize engine in 4 languages; Adversary finds counter-examples | |
| // | |
| // Contenders: | |
| // Formalizer: Nova Parr / multi-language formalization | |
| // Attacker: Palymis / logical attack & counter-examples | |
| // | |
| // Phase 1: Formalize in PVS, Higher-Order Logic, Beluga, Mizar (ZERO sorry) | |
| // Phase 2: Adversarial attack (find bugs, weak points, counter-examples) | |
| // Phase 3: Dual 12-page papers (max 20 theorems, zero sorry wins) | |
| // | |
| import { BedrockRuntimeClient, ConverseCommand } from "@aws-sdk/client-bedrock-runtime"; | |
| import { writeFileSync, mkdirSync } from "fs"; | |
| const client = new BedrockRuntimeClient({ region: "us-east-1" }); | |
| const CONTESTANTS = [ | |
| { id: "nvidia.nemotron-nano-3-30b", name: "Nova Parr (Formalizer)", shortName: "NOVA", role: "formalize" }, | |
| { id: "mistral.mistral-large-3-675b-instruct", name: "Palymis (Attacker)", shortName: "PALYMIS", role: "attack" }, | |
| ]; | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // ENGINE SPEC (from Semifinal + applications doc) | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| const ENGINE_SPEC = ` | |
| # NON-LINEAR BLACK HOLE THERMAL ENGINE: FORMALIZATION TARGETS | |
| ## Summary | |
| A hybrid quantum-classical system for constraint satisfaction (3-SAT) with: | |
| - Classical ODE (4D non-linear, implicit midpoint Newton-Raphson) | |
| - Quantum subsystem (Hayden-Preskill fast scrambler + phase variance coupling) | |
| - Lindblad dissipation at entropy floor S_min = 0.001 | |
| - Conditional non-reducibility to primitive recursive functions | |
| ## Core Theorems (Target: 20 total across 4 languages) | |
| 1. **Logarithmic Singularity Elimination** | |
| Transform S(t) = S_min Β· e^{u(t)} eliminates pole at S=0 | |
| Proof: u unbounded βΉ S > 0 for all finite t | |
| 2. **Implicit Midpoint Stability** | |
| Scheme x_{n+1} = x_n + Ξt F((x_n + x_{n+1})/2) is A-stable | |
| Proof: Dahlquist criterion + backward Euler equivalence | |
| 3. **Quantum Phase Variance Bound** | |
| ΟΒ²_ΞΈ = Var_k[arg β¨Ο|P_k|Οβ©] β [0, ΟΒ²] | |
| Proof: Hermitian projectors + Born rule normalization | |
| 4. **Lindblad Trace Preservation** | |
| Jump operators L_k = βΞ P_k preserve Tr(Ο) = 1 | |
| Proof: Kraus representation + Lindblad master eq. | |
| 5. **3-SAT Reduction Completeness** | |
| Engine + Oracle βΉ NP-complete solver | |
| Proof: Clause projectors encode all Boolean constraints | |
| 6. **BQP Oracle Requirement** | |
| Phase variance extraction requires BQP oracle (not PR) | |
| Proof: Hadamard test + phase estimation lower bound | |
| 7. **Convergence to Ground State** | |
| If β satisfying assignment, engine reaches E β 0 in poly(n) steps | |
| Proof: Energy dissipation + spectral gap argument | |
| 8. **Non-Reducibility Conditional** | |
| (P β NP) βΉ (Engine β PR) | |
| Proof: Contrapositive + Church-Turing thesis | |
| 9. **Hayden-Preskill Scrambling Time** | |
| Information recovery at t = O(log n), Page curve follows | |
| Proof: OTOC decay + unitary scrambler bound | |
| 10. **Singular Perturbation Analysis** | |
| Implicit midpoint + Lindblad near S_min form singular system | |
| Proof: Ξ³(S) = Ξβ/SΒ² diverges at S_min | |
| ## Proof Requirements (ZERO axioms, NO sorry, complete proofs) | |
| For each theorem: | |
| - Formal type signature in target language | |
| - Complete proof term (no holes) | |
| - All lemmas inlined or proved | |
| - Explicit use of axiomatic foundations only | |
| ## Known Challenges (Typical Attack Points) | |
| 1. **Phase Variance Well-Definedness** | |
| ΟΒ²_ΞΈ = Var_k[arg β¨Ο|P_k|Οβ©] β is arg continuous? | |
| Attack: Find state where phase is discontinuous | |
| 2. **Implicit Midpoint Existence** | |
| Does x_{n+1} always have unique solution? | |
| Attack: Construct force field where Newton-Raphson fails | |
| 3. **Hayden-Preskill Coupling** | |
| Does phase variance feedback stabilize scrambling? | |
| Attack: Show feedback destabilizes for some parameters | |
| 4. **Lindblad Collapse Semantics** | |
| When measured, does dissipation reset coherence? | |
| Attack: Construct trajectory where measurement fails | |
| 5. **Ground State Assumption** | |
| Does EVERY 3-SAT instance have unique ground state? | |
| Attack: Generate instance with multiple ground states | |
| 6. **Primitive Recursive Boundary** | |
| Is BQP oracle truly non-primitive-recursive? | |
| Attack: Show via Ackermann function argument | |
| 7. **Parameter Sensitivity** | |
| Are theorems robust to ΞΊ, Ξ», Ξ·, Ξβ perturbations? | |
| Attack: Vary parameters, find breakpoints | |
| 8. **Finite Precision** | |
| Do theorems hold with floating-point arithmetic? | |
| Attack: Show accumulation of rounding errors | |
| ## Attack Scoring Criteria | |
| High-value counter-example: | |
| - Breaks a claimed theorem (contradiction to spec) | |
| - Constructive (explicit failing instance) | |
| - Non-obvious (not immediately from definition) | |
| - Severity: HIGH if breaks core theorems 1-5, MEDIUM if 6-10, LOW if minor | |
| Example HIGH attack: | |
| "Theorem 3 (phase variance bound) assumes projectors are orthogonal. | |
| But in entangled states β¨Ο|P_i P_j|Οβ© β 0 for i β j. | |
| Counter-example: [explicit state construction]" | |
| `; | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // PHASE 1: Multi-Language Formalization (Formalizer only) | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| const PHASE1_PROMPT = `You are formalizing the Non-Linear Black Hole Thermal Engine in FOUR proof languages. | |
| ${ENGINE_SPEC} | |
| YOUR TASK: Formalize in PVS, Higher-Order Logic, Beluga, and Mizar. | |
| CRITICAL RULES: | |
| - CHOOSE the 4 languages (one per section) | |
| - ZERO axioms, ZERO sorry, ZERO postulate, ZERO admit | |
| - All 10 theorems (or max 5 per language) with complete proofs | |
| - NO placeholder proofs β full proof terms | |
| - Explicit lemmas for all mathematical operations (exponential, logarithm, variance, etc.) | |
| STRUCTURE (ONE per language): | |
| ## SECTION 1: PVS (Higher-Order Logic + Dependent Types) | |
| - Theory name: BlackHoleEngine | |
| - Types: entropy, amplitude, phase_variance (with proof invariants) | |
| - Theorems 1-3: Singularity, stability, phase variance bounds | |
| - Proof style: Tactic-based, using PVS library theorems | |
| ## SECTION 2: Higher-Order Logic (Isabelle/HOL, Coq, or Lean 4) | |
| - Define force system from first principles | |
| - Theorems 4-5: Lindblad trace, 3-SAT reduction | |
| - Proof style: Term-mode proofs, explicit lambda | |
| ## SECTION 3: Beluga (Dependent Type Theory + Proof Terms) | |
| - Encoding: Hilbert space as dependent type family | |
| - Theorems 6-7: BQP oracle, ground state convergence | |
| - Proof style: Full proof terms with explicit type checking | |
| ## SECTION 4: Mizar (Declarative, Closest to Math Textbook) | |
| - Classical mathematical style | |
| - Theorems 8-10: Non-reducibility, scrambling, singular perturbation | |
| - Proof style: Environment declarations, lemmas, QED | |
| SCORING: Max 10 theorems per language Γ 4 = 40 possible. | |
| Report: THEOREMS PROVEN: N (counted across all 4) | |
| OUTPUT: Four complete, standalone code blocks. Language name first line as comment. | |
| All proofs complete. Zero holes.`; | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // PHASE 2: Adversarial Attack (Attacker only) | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| const PHASE2_PROMPT = `You are adversarially attacking the Black Hole Engine formalization. | |
| CONTEXT: | |
| The formalizer just submitted proofs in 4 languages (PVS, HOL, Beluga, Mizar). | |
| YOUR TASK: Find bugs, counter-examples, weak points in the formalization. | |
| ${ENGINE_SPEC} | |
| ATTACK STRATEGY (Choose 3-5 points of maximum impact): | |
| 1. **Definitional Gaps** | |
| - Is phase variance ΟΒ²_ΞΈ = Var[arg β¨Ο|P_k|Οβ©] well-defined? | |
| - Is arg continuous on complex projective space? | |
| - What happens when all β¨Ο|P_k|Οβ© have identical phase? | |
| 2. **Mathematical Inconsistencies** | |
| - Implicit midpoint: does Newton-Raphson always converge for this force field? | |
| - Singular perturbation: at S=S_min, does dissipation rate diverge safely? | |
| - Ground state assumption: can 3-SAT have degenerate ground states? | |
| 3. **Proof Soundness** | |
| - Do they use any unstated axioms (choice, LEM, AC)? | |
| - Are type signatures correct (do projectors actually preserve norm)? | |
| - Does Hayden-Preskill coupling destabilize for adversarial parameters? | |
| 4. **Parameter Sensitivity** | |
| - Vary ΞΊ, Ξ», Ξ·, Ξβ. Do theorems still hold? | |
| - Find values where implicit midpoint fails. | |
| - Show where phase variance becomes unbounded. | |
| 5. **Computational Feasibility** | |
| - Can this actually be implemented in finite precision? | |
| - Do numerical errors accumulate catastrophically? | |
| - Show a 3-SAT instance where the engine fails. | |
| HIGH-VALUE ATTACKS (Worth 50+ points each): | |
| - **Critical theorem broken**: Find explicit contradiction | |
| - **Hidden axiom dependency**: Show proof requires unproven lemma | |
| - **Parameter trap**: Formalization works for all params EXCEPT [specific set] | |
| - **Type error**: Projector type doesn't match expected signature | |
| - **Non-constructivity**: Proof is non-constructive (invoices excluded middle) | |
| OUTPUT: | |
| 1. **Counter-Example 1** (high severity): [Explicit construction] | |
| Theorem broken: [Theorem N] | |
| Reason: [Why it fails] | |
| 2. **Counter-Example 2** (medium severity): [...] | |
| 3. **Counter-Example 3** (low severity): [...] | |
| 4. **Weak Point Summary**: [Which theorems are strongest, which are fragile?] | |
| 5. **Suggestions for Fix**: [How could formalizer harden proofs?] | |
| SCORING: HIGH attack = 30pts, MEDIUM = 15pts, LOW = 5pts | |
| Each must have explicit construction, not just critique`; | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // PHASE 3: Dual 12-Page Papers + Counter-Response | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| const PHASE3_PROMPT = `Write a 12-page paper defending or attacking the Black Hole Engine formalization. | |
| PAPER 1 (Formalizer): "Formalization and Soundness of the Non-Linear Black Hole Engine" | |
| - Sections: | |
| 1. Abstract (formalization approach, languages chosen, key theorems) | |
| 2. Introduction (why multi-language approach, coverage) | |
| 3. PVS Formalization (3-4 pages: language choice, theorem statements, proof strategy) | |
| 4. Higher-Order Logic (3-4 pages: dependent types, quantifier handling) | |
| 5. Beluga (2-3 pages: proof terms, implicit arguments) | |
| 6. Mizar (2-3 pages: declarative style, automation) | |
| 7. Proof Soundness (1-2 pages: why these proofs are complete) | |
| 8. Limitations & Open Questions | |
| 9. Conclusion | |
| 10. References | |
| PAPER 2 (Attacker): "Adversarial Analysis and Counter-Examples to the Engine Formalization" | |
| - Sections: | |
| 1. Abstract (counter-examples found, severity assessment) | |
| 2. Introduction (attack surface, methodology) | |
| 3. Definitional Issues (2 pages: gaps in ΟΒ²_ΞΈ, phase continuity) | |
| 4. Mathematical Flaws (2-3 pages: implicit midpoint convergence, singular perturbation) | |
| 5. Proof Gaps (2-3 pages: unstated axioms, type errors) | |
| 6. Counter-Example 1: [Explicit construction] (1-2 pages) | |
| 7. Counter-Example 2: [Explicit construction] (1-2 pages) | |
| 8. Severity Assessment & Fix Recommendations (1-2 pages) | |
| 9. Conclusion | |
| 10. References | |
| REQUIREMENTS BOTH PAPERS: | |
| - MINIMUM 12 pages (assume ~2500 chars per page = 30,000 char minimum) | |
| - LaTeX format | |
| - MAX 20 theorems combined (count Formalizer + Attacker) | |
| - ZERO sorry, ZERO postulate, ZERO axiom (reference only) | |
| - If Attacker breaks theorem: explicitly state which one | |
| - If Formalizer responds: explain why counter-example is invalid/flawed | |
| SCORING: | |
| - Formalizer: +10 pts per theorem (capped at 15), +5 per page (capped at 12), +20 if zero sorry | |
| - Attacker: +15 per HIGH counter-example, +8 per MEDIUM, +2 per LOW, +10 if no false positives | |
| - Winner: Total > opponent | |
| OUTPUT: Two complete LaTeX papers. Adversarial pair-wise scoring.`; | |
| async function invoke(modelId, prompt, maxTokens = 8192) { | |
| const start = Date.now(); | |
| try { | |
| const cmd = new ConverseCommand({ | |
| modelId, | |
| messages: [{ role: "user", content: [{ text: prompt }] }], | |
| inferenceConfig: { maxTokens, temperature: 0.1 }, | |
| }); | |
| const res = await client.send(cmd); | |
| const elapsed = Date.now() - start; | |
| const text = res.output?.message?.content?.[0]?.text || ""; | |
| const usage = res.usage || {}; | |
| const stopReason = res.stopReason || "unknown"; | |
| return { text, elapsed, usage, stopReason, error: null }; | |
| } catch (e) { | |
| return { text: "", elapsed: Date.now() - start, usage: {}, stopReason: "error", error: e.message }; | |
| } | |
| } | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| // SCORING | |
| // βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| function scoreFormalization(text) { | |
| const languages = { | |
| pvs: /theory|pvs|axiom|lemma|theorem/i.test(text), | |
| hol: /isabelle|coq|lean|theorem|proof|fun/i.test(text), | |
| beluga: /rec |by|block|lookup|proof|term/i.test(text), | |
| mizar: /theorem|proof|qed|assume|by|means|per|cases/i.test(text), | |
| }; | |
| const langCount = Object.values(languages).filter(Boolean).length; | |
| const theorems = (text.match(/theorem|Theorem|lemma|Lemma/gi) || []).length; | |
| const sorries = (text.match(/sorry|admit|postulate|undefined|axiom|assert|undefined/gi) || []).length; | |
| const lines = (text.match(/\n/g) || []).length; | |
| const selfReport = text.match(/THEOREMS?\s+PROVEN\s*:\s*(\d+)/i); | |
| const reported = selfReport ? parseInt(selfReport[1]) : 0; | |
| const effectiveTheorems = Math.max(theorems, reported); | |
| return { | |
| languages: langCount, | |
| theorems: effectiveTheorems, | |
| sorries, | |
| lines, | |
| score: langCount * 50 + effectiveTheorems * 100 - sorries * 200 + Math.min(30, lines / 5), | |
| }; | |
| } | |
| function scoreAttack(text) { | |
| const highAttacks = (text.match(/high.{0,30}(counter|attack|break|contradiction)/gi) || []).length; | |
| const mediumAttacks = (text.match(/medium.{0,30}(counter|attack|weak|flaw)/gi) || []).length; | |
| const lowAttacks = (text.match(/low.{0,30}(issue|point)/gi) || []).length; | |
| const counterExamples = (text.match(/counter.example|counter-example|counterexample/gi) || []).length; | |
| const constructions = (text.match(/explicit|construct|instance|assignment|proof|show/gi) || []).length; | |
| const highScore = highAttacks * 30; | |
| const mediumScore = mediumAttacks * 15; | |
| const lowScore = lowAttacks * 5; | |
| const constructScore = Math.min(50, counterExamples * 5 + (constructions > 20 ? 20 : 0)); | |
| return { | |
| highAttacks, | |
| mediumAttacks, | |
| lowAttacks, | |
| counterExamples, | |
| score: highScore + mediumScore + lowScore + constructScore, | |
| }; | |
| } | |
| function scorePaper(text) { | |
| const sections = { | |
| abstract: /abstract/i.test(text), | |
| intro: /introduction|motivation/i.test(text), | |
| methods: /method|formalization|approach|attack/i.test(text), | |
| theorems: /theorem\s+\d|\\textbf\{Theorem/i.test(text), | |
| examples: /example|counter|construct/i.test(text), | |
| discussion: /discussion|limitation|fix/i.test(text), | |
| conclusion: /conclusion/i.test(text), | |
| refs: /reference|bibliography/i.test(text), | |
| }; | |
| const sectionCount = Object.values(sections).filter(Boolean).length; | |
| const chars = text.length; | |
| const pages = Math.floor(chars / 2500); | |
| const theorems = (text.match(/Theorem\s+\d+/g) || []).length; | |
| const equations = (text.match(/\$[^$]+\$/g) || []).length; | |
| return { | |
| sections: sectionCount, | |
| pages, | |
| theorems, | |
| equations, | |
| score: sectionCount * 20 + Math.min(60, pages * 5) + theorems * 10 + equations * 2, | |
| }; | |
| } | |
| async function runMatch() { | |
| const outDir = "C:\\Users\\jessi\\Desktop\\bobs control repo\\tournament\\formalization-attack"; | |
| mkdirSync(outDir, { recursive: true }); | |
| console.log("ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ"); | |
| console.log("β FORMALIZATION ATTACK: Nova Parr vs Palymis β"); | |
| console.log("β Challenge: Multi-Language Formalization + Adversarial Review β"); | |
| console.log("β Phase 1: PVS + HOL + Beluga + Mizar (ZERO sorry) β"); | |
| console.log("β Phase 2: Adversarial Attack (find counter-examples) β"); | |
| console.log("β Phase 3: Dual 12-Page Papers (max 20 theorems total) β"); | |
| console.log("β WINNER: Best formalization rigor + best attack severity β"); | |
| console.log("ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ\n"); | |
| const allResults = {}; | |
| // ββ PHASE 1: Formalization (Nova only) ββ | |
| console.log(`\n${"β".repeat(64)}`); | |
| console.log(` PHASE 1: Multi-Language Formalization`); | |
| console.log(`${"β".repeat(64)}`); | |
| console.log(`\n [FORMALIZER] Nova Parr...`); | |
| const r1 = await invoke(CONTESTANTS[0].id, PHASE1_PROMPT, 8192); | |
| if (r1.error) { | |
| console.log(` β ERROR: ${r1.error}`); | |
| allResults.nova = { phase1: null }; | |
| } else { | |
| const s1 = scoreFormalization(r1.text); | |
| console.log(` ${r1.elapsed}ms | out=${r1.usage.outputTokens||"?"} | languages:${s1.languages} theorems:${s1.theorems} sorries:${s1.sorries} | score:${s1.score}`); | |
| writeFileSync(`${outDir}/NOVA_formalization.txt`, r1.text); | |
| allResults.nova = { phase1: { score: s1, text: r1.text } }; | |
| } | |
| // ββ PHASE 2: Attack (Palymis only) ββ | |
| console.log(`\n${"β".repeat(64)}`); | |
| console.log(` PHASE 2: Adversarial Attack`); | |
| console.log(`${"β".repeat(64)}`); | |
| console.log(`\n [ATTACKER] Palymis...`); | |
| const r2 = await invoke(CONTESTANTS[1].id, PHASE2_PROMPT, 8192); | |
| if (r2.error) { | |
| console.log(` β ERROR: ${r2.error}`); | |
| allResults.palymis = { phase2: null }; | |
| } else { | |
| const s2 = scoreAttack(r2.text); | |
| console.log(` ${r2.elapsed}ms | out=${r2.usage.outputTokens||"?"} | HIGH:${s2.highAttacks} MEDIUM:${s2.mediumAttacks} LOW:${s2.lowAttacks} | score:${s2.score}`); | |
| writeFileSync(`${outDir}/PALYMIS_attack.txt`, r2.text); | |
| allResults.palymis = { phase2: { score: s2, text: r2.text } }; | |
| } | |
| // ββ PHASE 3: Papers (Both) ββ | |
| console.log(`\n${"β".repeat(64)}`); | |
| console.log(` PHASE 3: Dual 12-Page Papers`); | |
| console.log(`${"β".repeat(64)}`); | |
| console.log(`\n [FORMALIZER DEFENSE] Nova Parr...`); | |
| const r3a = await invoke(CONTESTANTS[0].id, PHASE3_PROMPT + "\n\n(You are the Formalizer. Write PAPER 1.)", 8192); | |
| if (r3a.error) { | |
| console.log(` β ERROR: ${r3a.error}`); | |
| allResults.nova.phase3 = null; | |
| } else { | |
| const s3a = scorePaper(r3a.text); | |
| console.log(` ${r3a.elapsed}ms | out=${r3a.usage.outputTokens||"?"} | sections:${s3a.sections} pages:${s3a.pages} theorems:${s3a.theorems} | score:${s3a.score}`); | |
| writeFileSync(`${outDir}/NOVA_paper.tex`, r3a.text); | |
| allResults.nova.phase3 = { score: s3a, text: r3a.text }; | |
| } | |
| console.log(` [ATTACKER BRIEF] Palymis...`); | |
| const r3b = await invoke(CONTESTANTS[1].id, PHASE3_PROMPT + "\n\n(You are the Attacker. Write PAPER 2.)", 8192); | |
| if (r3b.error) { | |
| console.log(` β ERROR: ${r3b.error}`); | |
| allResults.palymis.phase3 = null; | |
| } else { | |
| const s3b = scorePaper(r3b.text); | |
| console.log(` ${r3b.elapsed}ms | out=${r3b.usage.outputTokens||"?"} | sections:${s3b.sections} pages:${s3b.pages} theorems:${s3b.theorems} | score:${s3b.score}`); | |
| writeFileSync(`${outDir}/PALYMIS_paper.tex`, r3b.text); | |
| allResults.palymis.phase3 = { score: s3b, text: r3b.text }; | |
| } | |
| // ββ FINAL VERDICT ββ | |
| console.log(`\n\n${"β".repeat(64)}`); | |
| console.log(" FINAL VERDICT β Formalization vs Attack"); | |
| console.log(`${"β".repeat(64)}\n`); | |
| const novaScore = (allResults.nova.phase1?.score?.score || 0) + (allResults.nova.phase3?.score?.score || 0); | |
| const palymisScore = (allResults.palymis.phase2?.score?.score || 0) + (allResults.palymis.phase3?.score?.score || 0); | |
| console.log(` NOVA (Formalizer)`); | |
| console.log(` Formalization: ${allResults.nova.phase1?.score?.score || 0} (${allResults.nova.phase1?.score?.theorems || 0}thm, ${allResults.nova.phase1?.score?.languages || 0}lang)`); | |
| console.log(` Paper: ${allResults.nova.phase3?.score?.score || 0} (${allResults.nova.phase3?.score?.pages || 0}pg)`); | |
| console.log(` TOTAL: ${novaScore}\n`); | |
| console.log(` PALYMIS (Attacker)`); | |
| console.log(` Attacks: ${allResults.palymis.phase2?.score?.score || 0} (${allResults.palymis.phase2?.score?.highAttacks || 0}H, ${allResults.palymis.phase2?.score?.mediumAttacks || 0}M, ${allResults.palymis.phase2?.score?.lowAttacks || 0}L)`); | |
| console.log(` Paper: ${allResults.palymis.phase3?.score?.score || 0} (${allResults.palymis.phase3?.score?.pages || 0}pg)`); | |
| console.log(` TOTAL: ${palymisScore}\n`); | |
| if (novaScore > palymisScore) { | |
| console.log(` π WINNER: NOVA (Formalization soundness prevails)`); | |
| } else if (palymisScore > novaScore) { | |
| console.log(` π WINNER: PALYMIS (Critical attacks found)`); | |
| } else { | |
| console.log(` π€ DRAW: Equal rigor on both sides`); | |
| } | |
| console.log(`\n All outputs saved: tournament/formalization-attack/\n`); | |
| writeFileSync(`${outDir}/VERDICT.json`, JSON.stringify({ | |
| nova: { | |
| formalization_score: allResults.nova.phase1?.score?.score || 0, | |
| formalization_theorems: allResults.nova.phase1?.score?.theorems || 0, | |
| formalization_languages: allResults.nova.phase1?.score?.languages || 0, | |
| paper_score: allResults.nova.phase3?.score?.score || 0, | |
| total: novaScore, | |
| }, | |
| palymis: { | |
| attack_score: allResults.palymis.phase2?.score?.score || 0, | |
| high_attacks: allResults.palymis.phase2?.score?.highAttacks || 0, | |
| medium_attacks: allResults.palymis.phase2?.score?.mediumAttacks || 0, | |
| low_attacks: allResults.palymis.phase2?.score?.lowAttacks || 0, | |
| paper_score: allResults.palymis.phase3?.score?.score || 0, | |
| total: palymisScore, | |
| }, | |
| winner: novaScore > palymisScore ? "NOVA" : (palymisScore > novaScore ? "PALYMIS" : "DRAW"), | |
| }, null, 2)); | |
| } | |
| runMatch().catch(e => { console.error("Match failed:", e.message); process.exit(1); }); | |