Spaces:
Sleeping
Sleeping
Commit History
-
Collapse source editors behind accordions
pebaryance52a31 -
Wire file upload to populate Code fields
pebaryan9308e59 -
Bump gradio to 5.27, add help text below Run button
pebaryan69bfb4c -
Fix: use gr.DataFrame (new name in gradio 5)
pebaryan6733712 -
Fix: upgrade gradio to 5.27+ to fix API schema bug
pebaryan89db57e -
UI: flag LLM checkers with [LLM] tag, show always-run checks, improve status
pebaryanc9bb2a5 -
Fix: move theme/css to Blocks constructor (gradio 5 API)
pebaryan24d72c8 -
Fix: remove unsupported latex language param in gr.Code
pebaryanad3f02e -
Pin huggingface-hub for gradio 5.0.0 compat
pebaryan94962d8
-
Fix: install qalmsw from GitHub repo (not PyPI)
pebaryan1ccae7f -
Fix HF color values
pebaryan447b09e -
Deploy to HF Space: app.py + requirements
pebaryan891ef82 -
initial commit
Verified signature819b239 -
Add Hugging Face Space frontend
pebaryanea217f4 -
Improve open source project readiness
pebaryan3183da7
-
Add math formula consistency checker
pebaryan0ae9d9f
-
Add research pipeline skeleton — arXiv fetcher, corpus sampler, defect operators
pebaryan +1: Claude Opus 4.7Stdlib-only arXiv fetcher (Atom metadata API + e-print tarball with single-gzipped-tex fallback; extracts .tex/.bbl/.bib). Base-corpus sampler reuses qalmsw's paragraph/bib/citation parsers, resolves \input{} in memory, and maps cite keys to cited-paper arXiv IDs via eprint/URL fields or \bibitem bodies, with per-run abstract caching. Three defect operators (identity → supports, swap_random → unrelated, truncate_head → unclear) with a deterministic apply_operators harness. 19 new tests (no network). Smoke-tested end-to-end on 1706.03762: 10 source files, 3 base triples, 9 labeled variants. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>cdbb469 -
Add research plan for small-LM claim-verification study
pebaryan +1: Claude Opus 4.7Scope a workshop-target paper on how reliably 7B-32B local GGUF models judge claim-abstract alignment. Methodology is human-light: automatic labels via synthetic defect injection (abstract swaps, claim negation, truncation) plus label-free consistency diagnostics (self-agreement, cross-quantization, cross-family, paraphrase-stability). Bounded human spot-check only on the identity-baseline assumption. Hardware fleet pinned to V100 + 5060 Ti primary CUDA and 9060 XT as AMD ablation; sweep capped at 32B. Frontier baseline via OpenRouter across three families (Claude / GPT / Gemini) as a ceiling, not a competitor. Timeline ~7-10 weeks solo, down from 12-14 with panel labeling. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>e4c4397 -
Refresh CLAUDE.md for multi-file includes and inline bib discovery
pebaryan +1: Claude Opus 4.7Document the Document.load → resolve_includes flow, the origin-file attribution invariant on Paragraph/Section/Finding, the hybrid regex+bibtexparser .bib parser, and the two-source bibliography discovery path (\bibliography{} files + inline \begin{thebibliography} via bib/inline.py). Drop the now-stale "no multi-file resolution" and "no LLM-assisted citation verification" lines — both shipped. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>15adce2
-
Semantic Scholar backend, JSON output, image checker, batch mode
pebaryan- Add Semantic Scholar retrieval backend (free API, no auth, no CAPTCHAs) as the default for --enable-claims. Google Scholar kept as opt-in via --retrieval google-scholar. - Add --json flag for machine-readable CI output. - Add images checker: verifies \includegraphics files exist on disk, tries common extensions when none given. - Add batch mode: qalmsw check accepts multiple paths and globs. - Add set_backend() for runtime retrieval switching. - Remove old test_scholar.py (replaced by test_semantic_scholar.py). - Update README and CLAUDE.md for all new features.a438ef8 -
arXiv Code of Conduct checkers: artifacts, figures, references
pebaryanThree new checkers that catch arXiv's 'incontrovertible evidence' of uncurated LLM output — the patterns that carry a 1-year ban: artifacts: - LLM meta-comments ('here is a 200-word summary', 'would you like me to make any changes?') - Placeholder data ('fill in with the real numbers', 'this table is illustrative') - Self-awareness artifacts ('as an AI language model', 'I cannot provide') - LaTeX boilerplate (\lipsum, TODO/FIXME markers) - Phantom labels/captions figures: - Missing \caption{} (error) - Placeholder caption text (error) - Orphaned \label{} without \ref{} (warning) - Near-empty floats (warning) references: - arXiv eprint ID verification via arXiv API - DOI resolution via doi.org - Cache per bib key to avoid redundant network calls - Non-existent papers flagged as errors Also adds eprint and doi fields to BibEntry dataclass for extraction from .bib files during parsing.63f36cc
-
Resolve \input{}/\include{} and discover inline bibliographies
pebaryan +1: Claude Opus 4.7Multi-file papers now load as one document: resolve_includes() inlines \input{} / \include{} recursively (cycle-safe, tolerant of missing targets) and produces a per-line map. Paragraph/Section/Finding carry an origin file so findings point at the real source a user edits, not the top-level main.tex. Papers that ship their bibliography inline as \begin{thebibliography} now auto-populate BibEntry records from \bibitem keys when no .bib file is declared, so the citation checker stops emitting false MISSING findings on that style. Bib-less runs get a single explicit warning instead of silent degradation. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>bf81e27 -
Add ClaimsChecker: LLM claim verification against Scholar abstracts
pebaryan +1: Claude Sonnet 4.6For each paragraph containing a \cite{}, extract (claim, cite_keys) via the LLM, resolve titles from the parsed bib, fetch abstracts via scholarly (cached per bib key), then ask the LLM to judge whether each abstract supports the claim. Non-'supports' verdicts become Findings; contradicts is error-severity, unrelated/unclear are warnings. Opt-in via --enable-claims: Scholar is scraping-based and slow/rate- limited, so the default behavior is unchanged. Search function is injected so tests stub it without touching the network — all 9 ClaimsChecker tests use a ScriptedLLM and a stub search. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1b38360 -
Extract bib titles and authors via bibtexparser
pebaryan +1: Claude Sonnet 4.6Adds optional title/author fields to BibEntry, populated by a second pass through bibtexparser. The regex pass still owns keys and line numbers so MISSING/UNUSED/DUPLICATE stay robust against malformed fields — when bibtexparser skips a broken entry, we keep the entry with empty string fields rather than losing it. Needed by the upcoming claims checker, which will look titles up on Scholar to retrieve abstracts for claim verification. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>cfed934 -
Exclude inline \begin{thebibliography} from parsed body
pebaryan +1: Claude Sonnet 4.6Papers using IEEE-style inline bibliographies embed hundreds of \bibitem entries in the source between \begin{document} and \end{document}. Those belong to reference metadata, not the prose that grammar/reviewer should see, so cut the body at \begin{thebibliography}. Citation scanning uses doc.source directly and is unaffected. Surfaced while running qalmsw against explainableprom/paper.tex — the Conclusion section's reviewer call was spending ~4k chars of its budget on bibitem text. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>e3ba259 -
Scaffold Google Scholar retrieval
pebaryan +1: Claude Sonnet 4.6Adds `src/qalmsw/retrieval/scholar.py` with a `ScholarResult` dataclass and `search_by_title()` powered by the `scholarly` library. Exposes a `qalmsw scholar "<query>"` CLI subcommand for quick one-off lookups. Tests mock `scholarly.search_pubs` so CI never touches the network. This is the retrieval foundation for the upcoming claims checker. Scraping- based; rate-limits and CAPTCHAs are expected under sustained use — suitable for personal/interactive runs, not CI scale. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>2b73c4e -
Fan out LLM calls in grammar and reviewer checkers
pebaryan +1: Claude Sonnet 4.6Both checkers now take a `concurrency` ctor arg routed through a shared `ordered_parallel_map` helper. CLI exposes `--concurrency/-j`, default 1 so it matches llama.cpp's default `--parallel 1`; users bump both server and CLI together. Results stay order-preserving. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>7c804e7 -
Add reviewer checker for section-level critique
pebaryan +1: Claude Sonnet 4.6One LLM call per \section{} (or whole body if none); over-long sections truncated to 12k chars to fit local-model context. Wired into CLI with a --skip-reviewer flag; grammar and reviewer now share one LlamaCppClient. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>6e7dd43 -
Add deterministic citation checker
pebaryan +1: Claude Sonnet 4.6New checker cross-references .cite keys against parsed .bib entries: - MISSING: cited key not in any .bib file (error) - UNUSED: bib entry never cited (info) - DUPLICATE: same key defined by multiple entries (warning) Architectural changes to support it: - Checker protocol now takes a Document (path + source + paragraphs) instead of just paragraphs, so citation-style checkers can scan the raw source and .bib discovery can use the document's directory. - Finding gains an optional file field so bib-level findings can point at a .bib entry rather than the .tex. - Prose filtering moved from the CLI into GrammarChecker; citation scanning needs headings too. - CLI exit code is 1 only for error-severity findings, so unused-bib info/warning noise in drafts doesn't fail CI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>d71fbfa -
Skip prose-less paragraphs and fail fast on LLM timeouts
pebaryan +1: Claude Sonnet 4.6Adds parse.has_prose() so structural-only paragraphs (\maketitle, \section{X}) don't burn LLM calls. Sets max_retries=0 on the client to surface real failures instead of silently retrying for 20+ minutes on slow local models. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>06c8e4f -
Initial scaffold: grammar checker MVP
pebaryan +1: Claude Sonnet 4.6- parse/: LaTeX paragraph splitter with source-line tracking - llm/: OpenAI-compat client for llama.cpp with lenient JSON parsing - checkers/: Checker protocol + Finding model + grammar checker - report/: rich terminal output - cli.py: typer-based `qalmsw check` command - tests/ covering parser, grammar checker (FakeLLM), JSON extraction Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>cc9d861