Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
241 commits
Select commit Hold shift + click to select a range
d62728d
Merge pull request #47 from qresp-code-development/develop
mgovoni-devel Jan 17, 2021
769e3c9
Merge pull request #50 from qresp-code-development/develop
mgovoni-devel Feb 21, 2021
698be1c
chore: apply modernization baseline on server master
Jul 2, 2026
59e874e
chore(deps): prune unused backend deps, add audit table (Phase A)
Jul 2, 2026
e626682
refactor(db): replace flask-mongoengine with direct mongoengine (Phas…
Jul 2, 2026
9a136ce
feat(api)!: migrate Connexion 2.14 -> 3.3 (ASGI) (Phase D)
Jul 2, 2026
93d4de6
feat(backend)!: lift Flask/Werkzeug to 3.x (Phase C)
Jul 2, 2026
c35e380
chore(docker/ci): py3.14 images, fix dev db, CI matrix, new lock (Pha…
Jul 2, 2026
576b0fe
docs: wave-2 modernization report, refresh run commands (Phase G)
Jul 2, 2026
043fab9
feat(frontend)!: modernize to Next 16 / React 19 / MUI 9 / RHF 7 / Je…
Jul 2, 2026
208db8c
chore(docker): frontend images node:14-alpine -> node:24-alpine
Jul 2, 2026
f226f78
docs: record frontend modernization (wave 3) in the report
Jul 2, 2026
d5260b3
docs: Qresp 2.0 implementation checklist (new direction, planning only)
Jul 4, 2026
4af350f
fix(frontend): repair modernization UI regressions
Jul 4, 2026
1678e07
feat(auth): add session auth skeleton
Jul 4, 2026
edc9279
feat(auth): enforce record ownership permissions
Jul 4, 2026
d30910e
feat(auth): add frontend auth and permission indicators
Jul 4, 2026
e861cae
feat(auth): add owner-gated record update flow
Jul 4, 2026
8d70cc6
feat(auth): add Google identity login
Jul 4, 2026
4c7000d
chore(auth): harden auth flow for staging review
Jul 4, 2026
cf6585b
fix(frontend): repair curator transition crash
Jul 6, 2026
616bece
fix(frontend): resolve paperdetails SSR API base in staging
Jul 6, 2026
0970e56
fix(frontend): replace paper detail defaultProps for React 19
Jul 6, 2026
386ebbc
feat(curator): support owner-gated full record editing
Jul 6, 2026
0e3d0c7
fix(curator): repair edit-mode QA blockers (collections type, CSRF)
Jul 6, 2026
6f7fed3
fix(curator): clean extra-field rows and PI row spacing in edit mode
Jul 6, 2026
71e90c0
fix(auth): return home after logout
Jul 6, 2026
ed2195c
fix(frontend): make staging explorer and curator drafts explicit
Jul 6, 2026
131a450
fix(frontend): resolve staging search SSR API base
Jul 6, 2026
17a69f7
fix(frontend): handle unknown paper license values
Jul 6, 2026
bca3057
feat(auth): production-ready ownership for new and legacy records
Jul 7, 2026
549add3
fix(curator): register prefilled values so Tools/Reference forms save
Jul 7, 2026
623382a
fix(curator): pass RHF control to file server radio
Jul 7, 2026
1985b88
fix(curator): publish without stale warning dialog
Jul 7, 2026
27565f5
fix(publish): surface errors and tolerate missing origin
Jul 7, 2026
55106c3
fix(publish): support staging verification links
Jul 7, 2026
cb625a7
fix(publish): truthful failure messages and logs for staging QA
Jul 7, 2026
91a8255
fix(frontend): resolve verify SSR API base in staging
Jul 7, 2026
db20fe7
feat(curator): clear verification CTA on staging publish success
Jul 7, 2026
f3f2b3a
feat(account): minimal signed-in account page with owned records
Jul 7, 2026
ba98f08
fix(curator): tighten browser draft workflow
Jul 7, 2026
5f44d00
fix(curator): separate draft flow from metadata export
Jul 7, 2026
1778bfb
feat(account): server-side curator drafts API
Jul 8, 2026
8208b65
feat(account): connect curator drafts to frontend
Jul 8, 2026
5957f72
fix(curator): save incomplete named account drafts
Jul 8, 2026
d7e7df6
fix(curator): guard unsaved open-form draft changes
Jul 8, 2026
4c8fbf9
fix(curator): name drafts before leaving
Jul 8, 2026
b8605d9
fix(header): prevent auth nav wrapping at narrow widths
Jul 8, 2026
254804a
feat(records): owner/admin soft-deactivate for published records
Jul 8, 2026
4044a1b
feat(records): deactivate/reactivate controls on paper details
Jul 8, 2026
4df5f86
feat(account): admin-only ownerless records management
Jul 8, 2026
ab4aa71
feat(account): rename drafts, confirm deletes, offer draft cleanup af…
Jul 8, 2026
11c9f90
fix(publish): idempotent verify links and clearer verify errors
Jul 8, 2026
e12ab26
docs: record ownership MVP completion and staging QA for new flows
Jul 8, 2026
e12ff7a
fix(records): complete soft-deactivation lifecycle from /account
Jul 8, 2026
d9792ef
feat(records): editor role, owner-reassignment semantics, and audit t…
Jul 9, 2026
c01a544
feat(account): editor role UI — role labels and editor management
Jul 9, 2026
eb9cc72
feat(curator): unsaved-changes guard for edit mode
Jul 9, 2026
1890a77
docs: QA steps and checklist entry for editor role, audit, edit guard
Jul 9, 2026
ce7d62b
feat(admin): GET /api/admin/papers — complete records inventory
Jul 9, 2026
d550e79
feat(account): admin All records management surface
Jul 9, 2026
421ce97
feat(auth): add CILogon OIDC backend and durable external identity
Jul 13, 2026
ff89b11
feat(auth): add institutional login UI and auth integration
Jul 13, 2026
1e7f4e4
docs(auth): document CILogon setup and migration path
Jul 13, 2026
c851ac9
feat(auth): Microsoft Entra OIDC sign-in for work/school accounts
Jul 13, 2026
3dde591
feat(auth): Microsoft sign-in button and provider label
Jul 13, 2026
ed3b0a4
docs(auth): Microsoft Entra setup guide and QA checklist
Jul 13, 2026
7966603
feat(import): DOI lookup and safe manuscript-source import APIs
Jul 13, 2026
a9e275b
feat(curator): Import Manuscript Source review-and-apply UI
Jul 13, 2026
db153a2
docs(import): Auto-Curation Lite phase 1 guide and QA steps
Jul 13, 2026
4fb3446
fix(nginx): raise client_max_body_size to 15M for base64 manuscript u…
Jul 14, 2026
d0b6f6f
refactor(curator): separate primary paper import target
Jul 14, 2026
64bfc7e
feat(curator): import DOI and manuscript metadata in paper info
Jul 14, 2026
cbc88bf
refactor(curator): separate primary paper metadata from references
Jul 14, 2026
140033f
fix(curator): import DOI and manuscript data into paper info
Jul 14, 2026
c302443
refactor(curator): restore one canonical primary-paper model and rena…
Jul 14, 2026
e0f142c
feat(assist): opt-in Qwen keyword suggestions backend
Jul 14, 2026
307a9ab
feat(assist): opt-in AI keyword suggestion UI
Jul 14, 2026
1dc076f
docs(assist): final data flow, Qwen setup/privacy, and QA steps
Jul 14, 2026
5a5867c
fix(assist): env-only config, validate-before-quota, per-call quota
Jul 14, 2026
791087e
fix(curator): single canonical DOI entry point and honest import copy
Jul 14, 2026
240f209
feat(assist): eligibility gating and clear prerequisites for AI keywords
Jul 14, 2026
e372a76
docs(assist): reflect single DOI entry point and eligibility gating
Jul 14, 2026
fbb1f18
feat(assist): enable AI keyword suggestions from live typed title/abs…
Jul 15, 2026
1637231
feat(assist): switch the AI keyword provider to Kimi (clean rename)
Jul 27, 2026
1ea1343
docs(assist): name Kimi in consent copy and document staging setup
Jul 27, 2026
f136a93
feat(assist): switch the AI keyword provider to Gemini (native REST)
Jul 27, 2026
215c721
docs(assist): name Gemini in consent copy and document its setup
Jul 27, 2026
78b13f3
fix(curator): accept DOI URLs in the canonical DOI field
Jul 27, 2026
c43fe62
fix(assist): parse real Gemini responses with thinking parts
Jul 27, 2026
f6f68d9
feat(import): accept a local PDF as a manuscript source (text only)
Jul 27, 2026
681459c
feat(assist): explicit full-source AI analysis with a selected manusc…
Jul 27, 2026
4fc5139
feat(rcc): add bounded, secure deterministic folder inventory and cla…
Jul 27, 2026
2e2c463
feat(curator): add folder-analysis review and apply workflow
Jul 27, 2026
f6001e9
feat(assist): add optional Gemini descriptions/keywords for selected …
Jul 27, 2026
a04999b
docs: add RCC folder-analysis documentation and staging QA steps
Jul 27, 2026
0e0cda0
fix(curator): separate picking a file server folder from saving it
Jul 27, 2026
bea15e4
feat(curator): compact folder-analysis review and reviewable AI propo…
Jul 27, 2026
18c496a
feat(auth): drop CILogon and move sign-in to a single /login choice page
Jul 28, 2026
b7e2950
fix(auth): offer the Google account chooser and keep OAuth codes out …
Jul 28, 2026
48d53af
fix(nginx): stop the global rate limiter from 503-ing normal page loads
Jul 28, 2026
997ddc9
feat(curator): responsive candidate cards, explicit partial results, …
Jul 28, 2026
f6432b3
feat(assist): let the AI offer a kind second opinion on unsure candid…
Jul 28, 2026
a66f91c
fix(rcc): only propose metadata a file on the server actually evidences
Jul 28, 2026
c557051
feat(curator): gate AI behind explicit consent and keep every candida…
Jul 28, 2026
c9fee3c
fix(rcc): rank evidence per field and keep filename guesses out of re…
Jul 28, 2026
1773b1d
feat(curator): show evidence per field and add an optional folder guide
Jul 28, 2026
1905662
fix(rcc): classify by folder role and artifact group, not by extension
Jul 28, 2026
54f22db
fix(charts): build image URLs safely and never render a blank figure
Jul 28, 2026
51477fd
feat(curator): confirm folder roles and make Unclassified readable
Jul 28, 2026
85e369e
feat(rcc): Folder Standard v1 validator and record boundaries
Jul 28, 2026
a83a643
feat(rcc): support explicit legacy record boundaries
Jul 28, 2026
96e7a5e
fix(rcc): complete invalid and grouped-folder analysis UI
Jul 28, 2026
72f4694
docs(rcc): document Folder Standard v1 workflow
Jul 28, 2026
77efc18
fix(rcc): give every candidate its own name, count and real file paths
Jul 29, 2026
74513ed
fix(rcc): put the boundary contract where the client reads it
Jul 29, 2026
9f8859f
fix(rcc): never label a candidate with a bare role root
Jul 29, 2026
e76691f
feat(import): propose title, authors and abstract from a PDF's front …
Jul 29, 2026
7a864a5
fix(import): make a stale backend image diagnosable instead of "unava…
Jul 30, 2026
d6384c4
feat(assist): separate publication-metadata help from keyword help
Jul 30, 2026
6a405e8
fix(import): hand the extracted text to Publication Assist, and finis…
Jul 30, 2026
2ddbc71
feat(import): read a publication year from a PDF, and stop losing abs…
Jul 30, 2026
b963aa1
fix(curator): make bibliographic requirements follow the kind of work
Jul 30, 2026
ef361f7
fix(assist): stop the AI action from submitting the form it lives in
Jul 30, 2026
f09be96
fix(curator): keep publication metadata forms open
Jul 30, 2026
2381b61
refactor(assist): remove AI proposal of publication metadata
Jul 30, 2026
2ddab63
fix(import): complete the deterministic sources DOI Fetch was missing
Jul 30, 2026
0fb843c
test: pin the deterministic publication contract and the section's sa…
Jul 30, 2026
2d3ce2e
docs: state which parts of curation use AI and which never do
Jul 30, 2026
f7a0b48
refactor(backend): drop manuscript upload and both AI metadata endpoints
Aug 3, 2026
5e5e2bd
refactor(curator): Publication Information is manual entry plus DOI F…
Aug 3, 2026
2419bd4
docs: record the reduced curation-assistant scope
Aug 3, 2026
bc4f158
fix(curator): parse a short legacy publication string without throwing
Aug 3, 2026
f6e78ce
fix(validation): give the form and publish one required-field contract
Aug 3, 2026
eaa16a5
fix(drafts): re-seed the open forms when a draft is applied
Aug 3, 2026
e95a305
feat(assist): keyword suggestion from the record's own metadata
Aug 3, 2026
edd2f95
feat(curator): Suggest Keywords with AI under the Keywords field
Aug 3, 2026
8494c67
docs: keyword AI is back, without the manuscript
Aug 3, 2026
d962c56
fix(artifacts): give datasets and scripts a real keywords field
Aug 3, 2026
d71f24b
fix(curation): ask the AI only for fields the record type can hold
Aug 3, 2026
af788ca
fix(curator): separate the Keywords and URLs inputs on datasets and s…
Aug 3, 2026
a79cb80
fix(folder-analysis): mark what is required, and let proposals be inc…
Aug 3, 2026
ea549a1
feat(curator): one artifact field contract, with a parity test
Aug 3, 2026
4d08e5c
fix(folder-analysis): render the contract instead of a second copy of it
Aug 3, 2026
17d504e
fix(curator): drop the URL input from datasets and scripts, keep the …
Aug 3, 2026
44d4979
fix(folder-analysis): pick the image a chart folder is named after
Aug 3, 2026
2ea4e1e
fix(assist): size the AI output budget, and name each failure
Aug 3, 2026
e3bbc69
fix(folder-analysis): say a candidate is incomplete once, not four times
Aug 3, 2026
970cc00
fix(charts): tell the five image failures apart, and show the URL
Aug 3, 2026
b1c8f56
fix(file-server): confirm a root change, and fix the picker dialog
Aug 3, 2026
e5ec4af
docs: record the Gemini settings a folder-analysis server needs
Aug 3, 2026
8c918f2
feat(folder-analysis): expose every image in a chart folder, with its…
Aug 3, 2026
5f99cdb
refactor(curation): one candidate per AI request, enforced on the server
Aug 3, 2026
98d5b64
feat(folder-analysis): give every chart image a role, and enhance one…
Aug 3, 2026
0719099
docs(folder-guide): recommend one chart per child folder, named after it
Aug 3, 2026
54637f9
fix(curation): actually emit image_options over the wire
Aug 4, 2026
ec890ec
fix(folder-analysis): one image controller, and reset state that outl…
Aug 4, 2026
f6bd389
feat(folder-analysis): decide Charts from the image files, not the fo…
Aug 4, 2026
a50ea58
fix(curation): let the chart plan be refused in one voice
Aug 4, 2026
6f3bb60
feat(curation): call a Chart what it is -- a figure
Aug 4, 2026
c9ce31b
feat(folder-analysis): choose chart images in the boundary panel, once
Aug 4, 2026
36dfdf7
docs(folder-analysis): a Chart's boundary is an image, not a folder
Aug 4, 2026
a0ce80a
docs(folder-standard): state the standard, and where multi-image revi…
Aug 4, 2026
1d7d0a6
fix(file-picker): put the actions where they cannot be scrolled away
Aug 4, 2026
1d7f6d0
feat(curator): split RCC imports by artifact type
Aug 4, 2026
474b357
refactor(rcc-import): say it once, and give the fields room to breathe
Aug 5, 2026
cf395dc
feat(curator): send a failed Save to the field that has to be fixed
Aug 5, 2026
3444c26
fix(rcc-import): let a candidate's chips and buttons stack on a phone
Aug 5, 2026
36ca3b4
fix(rcc-import): count the candidates an Add would really add
Aug 5, 2026
adef733
test(account): paste the editor list instead of buying it a longer ti…
Aug 5, 2026
e50df5a
fix(file-picker): stop a hidden checkbox from scrolling the whole dialog
Aug 6, 2026
df19edc
fix(rcc-import): centre what a candidate card opens, instead of inset…
Aug 6, 2026
d04715d
feat(related): work out how two records are related, and be able to s…
Aug 6, 2026
0f40d7d
feat(related): answer "what else bears on this record?" without touch…
Aug 6, 2026
26f8b71
fix(nginx): stop the related read from having to pick the wrong limiter
Aug 6, 2026
bcf8a7c
feat(related): show Related Research at the foot of Paper Details
Aug 6, 2026
230f6ff
docs(related): write down the thresholds and hand the QA to someone w…
Aug 6, 2026
fb771b2
fix(related): stop a provider blip from becoming a week-long claim
Aug 7, 2026
8b25bc2
fix(related): let an edited record get a fresh answer instead of last…
Aug 7, 2026
49dbf3f
test(related): pin the two failures that looked healthy from outside
Aug 7, 2026
98b2808
docs(related): record what the live API taught us, including the bad …
Aug 7, 2026
f58334f
feat(related): let a server have Related Qresp Records without callin…
Aug 7, 2026
494f6c8
feat(related): a way to ask a physicist whether the gate is right
Aug 7, 2026
e832c80
docs(related): retract the provider claim two DOIs were not enough to…
Aug 7, 2026
afd3a48
docs(related): finish retracting a claim that was still live in two p…
Aug 7, 2026
1ea91fe
feat(related): a second opinion the gate cannot influence
Aug 7, 2026
207968a
feat(related): tell readers how these suggestions were actually made
Aug 7, 2026
9b1a0c2
docs(related): separate "no model serves this" from "a model triages it"
Aug 7, 2026
996949f
fix(related): judge the pairs somebody asked about, not all 1,434
Aug 7, 2026
f755e80
docs(related): state the cost model and the re-collect the data now n…
Aug 7, 2026
9bd7a54
fix(related): stop a Windows BOM from eating the first record id
Aug 7, 2026
6613d30
feat(related): a smoke sample that samples something
Aug 8, 2026
75cf49d
fix(related): make the summary and the shortlist agree on what disagr…
Aug 8, 2026
02be10c
docs(assist): stop claiming Qresp has only one AI feature
Aug 8, 2026
f1de9c9
feat(assist): benchmark the keyword AI and the RCC description AI off…
Aug 8, 2026
3db91d3
docs(assist): how to run the benchmarks, and what they cannot tell you
Aug 8, 2026
126d7ff
fix(assist): send the artifact text the curator actually wrote
Aug 8, 2026
58d4604
fix(assist-eval): read Tools correctly, match paths exactly, collect RCC
Aug 8, 2026
aecdbad
docs(assist): the corrected field tables and the nine-step run
Aug 8, 2026
c248ba0
fix(assist-eval): preserve real RCC candidates in the cache
Aug 9, 2026
da4e366
fix(assist-eval): distinguish duplicate context from true loss
Aug 9, 2026
fccd4a3
docs(assist-eval): document cache and audit semantics
Aug 9, 2026
11824d7
fix(assist): give structured keyword reasons enough output budget
Aug 9, 2026
e1fcf1d
fix(assist-eval): retry failed provider units without replaying succe…
Aug 9, 2026
dfc50e3
docs(assist-eval): document free-tier pacing and resumable runs
Aug 9, 2026
66da46b
feat(related): answer Related Research for a record held by another Q…
Aug 10, 2026
1ab9637
fix(related): keep the section on screen when it cannot be loaded
Aug 10, 2026
1fdb980
docs(related): document federation, its security boundary and the sec…
Aug 10, 2026
760a5b7
fix(related): require a technical overlap, not a rare word or a share…
Aug 10, 2026
1527e29
feat(related): say why the external list is empty, and stop paying fo…
Aug 10, 2026
fc0670f
fix(federation): verify the registry, check DNS, and publish one serv…
Aug 10, 2026
9f5c681
docs(related): document the term rule, the empty-list reasons and the…
Aug 10, 2026
0de73d9
fix(federation): let QRESP_FEDERATION_SERVERS actually say "nobody"
Aug 10, 2026
e48b20b
fix(federation): fetch the registry over HTTPS only
Aug 10, 2026
6ce1048
fix(related): one background refresh per stale record, and keep the l…
Aug 10, 2026
226c5a0
feat(related): count the external pipeline before the cap, and cache it
Aug 10, 2026
c89a313
test(related): pin the four hardening contracts
Aug 10, 2026
3fa87ce
docs(related): correct the cap, the evidence families and the env con…
Aug 10, 2026
15d67ae
feat(rcc): give each folder candidate its own local evidence
Aug 11, 2026
7d7646d
fix(rcc): stop sending the curator's own answer back as the AI's input
Aug 11, 2026
a11e258
test(rcc): pin the evidence boundary, the budgets and the abstentions
Aug 11, 2026
8e0dc2b
test(eval): compare filenames-only against the enhanced evidence bundle
Aug 11, 2026
6893f7f
docs(rcc): document the evidence bundle, its limits and the new bench…
Aug 11, 2026
0dbea02
fix(rcc): abstain on the server when a candidate has no evidence
Aug 11, 2026
098f7c5
fix(rcc): say WHY a candidate got no AI suggestion
Aug 11, 2026
f8443f1
test(rcc): pin the deterministic abstention and the per-kind filter
Aug 11, 2026
7379e69
docs(rcc): document the no-evidence abstention
Aug 11, 2026
7e31f2c
fix(rcc): stop a candidate card contradicting itself about a field
Aug 11, 2026
6e0fdd2
feat(federation): publish the Explorer's default server
Aug 11, 2026
8fc32cc
fix(explorer): open on records instead of on a node picker
Aug 11, 2026
53d49bb
test: pin the field-state contract and the Explorer default flow
Aug 11, 2026
467577e
docs(federation): document QRESP_DEFAULT_EXPLORER_SERVER
Aug 11, 2026
c960e7f
fix(rcc): give the AI panel a partially applied state
Aug 11, 2026
5f1ea79
fix(explorer): tell a missing filter apart from a missing record
Aug 11, 2026
5e1571b
fix(explorer): drop the last blocking modal out of Advanced Search
Aug 11, 2026
52e5578
fix(related): judge a term by where it came from, not by how long it is
Aug 11, 2026
9bd44f1
test(related): pin provenance, the caps and the terms that must never…
Aug 11, 2026
2be6236
refactor(related): delete the state the gate stopped consulting
Aug 11, 2026
8feee95
test(related): assert the contract instead of the implementation
Aug 11, 2026
566b950
docs(related): delete the last two names the algorithm stopped using
Aug 11, 2026
057f55e
Improve explorer, related research feedback, and curation UX
Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/backend-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: backend-smoke

# Deterministic backend verification. Uses the pinned lock file and the
# in-process mongomock backend, so NO external MongoDB service is required.
# Mirrors the local handoff checks documented in QUICKSTART.md.
# Matrix: 3.11 = local dev baseline (lock provenance), 3.14 = Docker runtime.

on:
push:
branches: ["**"]
pull_request:

jobs:
backend:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.14"]
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install backend (exact locked versions)
run: |
python -m pip install --upgrade pip
pip install -r requirements.lock.txt
- name: pip check
run: python -m pip check
- name: Import / boot smoke (GET /)
run: python -c "import project; r = project.app.test_client().get('/'); assert r.status_code == 200, r.status_code; print('boot OK:', r.status_code)"
- name: Backend tests (nose2, mongomock — no MongoDB)
run: python -m nose2 -v
29 changes: 29 additions & 0 deletions .github/workflows/prototype-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: prototype-tests

# Runs the standalone curation-assistant prototype test suite. This is the
# modern replacement for the defunct Travis CI config (.travis.yml); the legacy
# backend/frontend suites still need a MongoDB service / Node toolchain and are
# tracked as follow-ups in modernization_report.md.

on:
push:
branches: ["**"]
pull_request:

jobs:
prototype:
runs-on: ubuntu-latest
defaults:
run:
working-directory: prototypes/curation_assistant
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install prototype (with test extras)
run: |
python -m pip install --upgrade pip
pip install -e ".[test]"
- name: Run tests
run: pytest -q
16 changes: 15 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,25 @@ PUBLISH_*
# Python
__pycache__

# Coverage data (every nose2 run rewrites it; was mistakenly tracked)
.coverage

# Pytest
.pytest_cache

# Certificate Files
*.certs
*.crt
*.key
*.pem
*.pem

# Local implementation-planning notes (kept out of source control)
RELATED_EXTERNAL_150_IMPLEMENTATION_AND_EVALUATION_PROMPT.md
UX_CURATION_EXPLORER_IMPLEMENTATION_CHECKLIST.md

# Generated live external-evaluation runs. `raw-results.jsonl` for the full
# public corpus is ~57 MB, well past the 200 kB pre-commit ceiling, and the
# whole directory is a reproducible artifact of one sweep. Deliberately narrow:
# it matches only `related-eval-external-*`, so earlier hand-rated
# `related-eval-*` folders stay visible to git exactly as they are.
related-eval-external-*/
36 changes: 22 additions & 14 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
- repo: git://github.com/pre-commit/pre-commit-hooks
rev: v2.2.3
hooks:
- id: check-yaml
- id: check-json
- id: check-xml
- id: check-ast
- id: check-merge-conflict
- id: flake8
- id: no-commit-to-branch
args: [--branch, master, --branch, develop]
- id: check-added-large-files
args: [--maxkb=200]
- id: trailing-whitespace
# pre-commit hooks. Run `pre-commit install` once, then hooks run on commit.
# Modernized: GitHub disabled the git:// protocol (Jan 2022), the top-level
# `repos:` key is now required, and `flake8` moved out of pre-commit-hooks into
# its own repository (pycqa/flake8).
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: check-yaml
- id: check-json
- id: check-xml
- id: check-ast
- id: check-merge-conflict
- id: no-commit-to-branch
args: [--branch, master, --branch, develop]
- id: check-added-large-files
args: [--maxkb=200]
- id: trailing-whitespace
- repo: https://github.com/pycqa/flake8
rev: 7.1.0
hooks:
- id: flake8
Loading