Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
278 commits
Select commit Hold shift + click to select a range
5edfd63
feat(40-S5): report the verified archive size from the upload tool
gsvgit Sep 17, 2026
2a71690
docs(40-S6): document the archive size tooling and the new-graph flow
gsvgit Sep 17, 2026
afdccf3
fix(40-S3): keep rows without a fetchable URL aligned in update mode
gsvgit Sep 17, 2026
f8a27c5
docs(40-S7): mark task 40 done in the task log
gsvgit Sep 17, 2026
c725178
docs(41-S1): record task 41 in the task log and write the detailed plan
gsvgit Sep 18, 2026
52dd7fa
docs(41-S2): document the canonical grammars on the five .inc-based c…
gsvgit Sep 18, 2026
546db11
docs(41-S3): document the canonical grammars on the remaining three c…
gsvgit Sep 18, 2026
1ee9f30
docs(41-S4): drop the per-graph grammar sections now that categories …
gsvgit Sep 18, 2026
07c9a4c
docs(41-S5): teach the contribution flow that grammars live on catego…
gsvgit Sep 18, 2026
76aa685
docs(41-S6): verify the docs build and record the subtask outcomes
gsvgit Sep 18, 2026
b544ce0
docs(41-S7): re-point stale references at the RDF category page
gsvgit Sep 18, 2026
408c0aa
docs(41-S8): mark task 41 done in the task log
gsvgit Sep 18, 2026
b72742e
docs(42-S1): record task 42 and create the FLPQ design page with taxo…
gsvgit Sep 18, 2026
19e53aa
docs(42-S2): specify the .mcfg Datalog-like grammar format
gsvgit Sep 18, 2026
c80f373
docs(42-S3): design the FLPQ site structure and reachable-pairs rende…
gsvgit Sep 18, 2026
c986200
docs(42-S4): design the flpq_data package structure and API changes
gsvgit Sep 18, 2026
f38ea3b
docs(42-S5): specify the 6.0.0 dataset layout and write the follow-up…
gsvgit Sep 18, 2026
e8a3d3a
docs(42-S6): make linkcheck survive transient Wikipedia 403 rate limits
gsvgit Sep 18, 2026
69e2ebb
docs(42-S1): simplify the MCFPQ formalism cell in the taxonomy table
gsvgit Sep 18, 2026
ab4a841
docs(42-S6): fix the direction reference in the linkcheck_retries com…
gsvgit Sep 18, 2026
6b8ca5c
docs(42-S6): mark task 42 done in the task log
gsvgit Sep 18, 2026
0890527
docs(43-S1): record task 43 and add the category column to reachable …
gsvgit Sep 18, 2026
06b0318
feat(43-S2): add the reachable-pairs tables generator to utils
gsvgit Sep 18, 2026
6496af9
docs(43-S3): render reachable pairs per category and sync the count c…
gsvgit Sep 18, 2026
87624f3
docs(43-S4): document the reachable-pairs tables tool in the maintain…
gsvgit Sep 18, 2026
294cc38
refactor(43-S2): make the reachable-pairs tool all-or-nothing and dro…
gsvgit Sep 18, 2026
06566b0
docs(43-S5): bound the Wikipedia rate-limit re-queueing in the docs l…
gsvgit Sep 21, 2026
a9383b4
docs(43-S5): stop resetting the Wikipedia rate-limit budget on success
gsvgit Sep 21, 2026
ee64ca3
docs(43-S6): mark task 43 done in the task log
gsvgit Sep 21, 2026
acc5764
docs(44-S1): record task 44, plan the coverage task, and add the lark…
gsvgit Sep 21, 2026
6bed512
feat(44-S2): add the MCFG data model, lark grammar, and mcfg_from_text
gsvgit Sep 21, 2026
c91a360
feat(44-S3): add MCFG semantic validation, start symbol, dimension an…
gsvgit Sep 21, 2026
c9e6cb1
feat(44-S4): add the MCFG writers and round-trip guarantees
gsvgit Sep 21, 2026
2da2ab0
docs(44-S5): add the MCFG module to the reference docs
gsvgit Sep 21, 2026
0f88fde
test(44-S3): cover the body-atom side of the arity consistency check
gsvgit Sep 21, 2026
c4ab062
docs(44-S6): mark task 44 done in the task log
gsvgit Sep 21, 2026
dee6bfa
chore: ignore the test.mcfg doctest artifact
gsvgit Sep 21, 2026
5828ad5
feat(45-S1): enforce line and branch coverage >= 95% locally
gsvgit Sep 21, 2026
b2ac43a
ci(45-S2): enforce the coverage gate in CI
gsvgit Sep 21, 2026
8f5934d
docs(45-S3): use the gh CLI in release recovery, drop the curl workar…
gsvgit Sep 21, 2026
6a00bc2
docs(45-S4): no-workaround rule in the tooling principle
gsvgit Sep 21, 2026
25a2a59
docs(45-S5): mark task 45 done
gsvgit Sep 21, 2026
ccfacb0
docs(51-S1): record tasks 51-53 and write the detailed plan
gsvgit Sep 21, 2026
4cda28e
docs(51-S2): record the CI-as-source-of-truth decision
gsvgit Sep 21, 2026
27a2992
docs(51-S3): reference the CI workflow steps instead of restating com…
gsvgit Sep 21, 2026
754cac1
docs(51-S4): point the skills at the CI workflow steps
gsvgit Sep 21, 2026
03aea75
ci(51-S5): replace duplicated policy comments with docs pointers
gsvgit Sep 21, 2026
66e59b8
docs(51-S6): mark task 51 done in the task log
gsvgit Sep 21, 2026
29d68f9
docs(52-S1): record the archive-structure guidance and write the plan
gsvgit Sep 21, 2026
d21a124
docs(52-S2): design the self-contained archive layout in the docs
gsvgit Sep 21, 2026
1f347c4
docs(52-S3): update the graph PR and issue templates to the new layout
gsvgit Sep 21, 2026
d440a95
feat(52-S4): add the archive structure validator
gsvgit Sep 21, 2026
30e2da7
feat(52-S5): gate uploads on the archive structure and add bucket audit
gsvgit Sep 21, 2026
506ba1c
docs(52-S6): rework the FLPQ design for self-contained archives
gsvgit Sep 21, 2026
99145db
style(52-S4): wrap long lines in the archive validator
gsvgit Sep 22, 2026
78526cc
docs(52): mark task 52 done
gsvgit Sep 22, 2026
7ab668e
docs(46-S1): record the RPQ design-only scope and write the plan
gsvgit Sep 22, 2026
6cc2b60
docs(46-S2): record the RPQ design decision in the FLPQ design doc
gsvgit Sep 22, 2026
25a3456
docs(46-S3): add the RPQ stub template entries to the Grammars section
gsvgit Sep 22, 2026
7ec393c
docs(46): mark task 46 done in the task log
gsvgit Sep 22, 2026
4430856
docs(47-S1): record task 47 and write the detailed plan
gsvgit Sep 22, 2026
4867597
feat(47-S2): add the query_class column to reachable pairs
gsvgit Sep 22, 2026
3f3355e
feat(47-S3): make the reachable-pairs generator query-class aware
gsvgit Sep 22, 2026
38b4ea8
docs(47-S4): document the query_class column on the site
gsvgit Sep 22, 2026
7c23c5a
fix(47-S3): make the reachable-pairs doctests parse and pass
gsvgit Sep 22, 2026
a5feb11
style(47-S3): wrap the long toctree doctest line
gsvgit Sep 22, 2026
cfbc2f0
docs(47): mark task 47 done in the task log
gsvgit Sep 22, 2026
049a730
docs(54-55): record the archive-extension and data-providing tasks
gsvgit Sep 22, 2026
a2ce829
docs(54-S1): record user decisions and write the detailed plan
gsvgit Sep 22, 2026
1f0529a
feat(54-S2): add the transition-system style to the .rsm format
gsvgit Sep 22, 2026
4e29c96
feat(54-S3): validate query directories with per-query results.mtx
gsvgit Sep 22, 2026
276eae6
docs(54-S4): document the RSM format and the extended archive structure
gsvgit Sep 22, 2026
be114ff
refactor(54-S3): extract _graph_dimensions to deduplicate the validator
gsvgit Sep 22, 2026
9cff914
docs(54): mark task 54 done in the task log
gsvgit Sep 22, 2026
12203e1
docs(55-S1): record user decisions and write the detailed plan
gsvgit Sep 22, 2026
6bdac0a
feat(55-S2): add --partial mode to the archive structure validator
gsvgit Sep 22, 2026
2d7d6df
feat(55-S3): add the partial-archive merge tool
gsvgit Sep 22, 2026
7658043
docs(55-S4): make the Google Drive link the main data-providing way
gsvgit Sep 22, 2026
a0df94f
refactor(55-S3): hoist the README section parse out of the comprehension
gsvgit Sep 22, 2026
a6dac28
docs(55): mark task 55 done in the task log
gsvgit Sep 22, 2026
4ce0b0a
docs(56-S1): record task 56 and write the detailed plan
gsvgit Sep 22, 2026
80dd433
docs(56-S2): document the two optimized grammars on the category pages
gsvgit Sep 22, 2026
6f5880d
docs(56-S3): record the equivalence-check results and document both l…
gsvgit Sep 22, 2026
f61a405
docs(56-S4): record the 41 re-uploaded archives with the optimized gr…
gsvgit Sep 22, 2026
b6e1033
docs(56-S5): changelog entry and re-synced archive sizes
gsvgit Sep 22, 2026
e3cea7f
docs(56): mark task 56 done in the task log and plan
gsvgit Sep 22, 2026
c7e2913
docs(57-S1): record task 57 in the task log and write the detailed plan
gsvgit Sep 23, 2026
e2feda7
docs(57-S2): fix the broken math in the C Alias page
gsvgit Sep 23, 2026
57eb73a
feat(57-S3): add the math-snippet guard to the test suite
gsvgit Sep 23, 2026
6c99c5e
docs(57-S4): document the C Alias fix and the math-snippet guard
gsvgit Sep 23, 2026
d42a8ef
refactor(57-S3): share the directive-body scan between the two extrac…
gsvgit Sep 23, 2026
3a7c6f7
docs(57): mark task 57 done in the task log and plan
gsvgit Sep 23, 2026
2421355
fix: globally unique RSM state names and indexed reverse labels
gsvgit Sep 24, 2026
c425da1
feat: add graph_dir_to_g_text for FastMatrixCFPQ .g generation
gsvgit Sep 24, 2026
3fa374f
docs: add RSM figures and transition-system text to grammar pages
gsvgit Sep 24, 2026
06ebf6d
docs: unify _r naming, add RSM text, fix swapped grammar refs
gsvgit Sep 24, 2026
8822705
feat(48): extend archive checker with naming rules, relax class-dir r…
gsvgit Sep 24, 2026
0d2ac7f
fix(48-S1): parse .cnf as templates, allow inert terminals, stream mt…
gsvgit Sep 25, 2026
f51a3da
fix: update the rsa doctest for globally unique state names
gsvgit Sep 25, 2026
f70236d
feat(48-S5): sync reachable pairs with the v6 oracle results
gsvgit Sep 25, 2026
befec2e
feat(48-S6): remove the grammar and benchmark paths from package and …
gsvgit Sep 25, 2026
3c4c535
docs(48): mark task 48 done and plan the stub-results follow-up
gsvgit Sep 25, 2026
e8b13c2
docs(48): drop the convert_old_to_new section from the tools page
gsvgit Sep 25, 2026
5648179
docs: strengthen AGENTS.md principles
gsvgit Sep 25, 2026
59b0640
docs(128-S1): introduce issue-based task tracking in workflow-management
gsvgit Sep 25, 2026
b0e7c93
docs(128-S2): re-point subtask-loop completion semantics to issues
gsvgit Sep 25, 2026
d61e41a
docs(128-S3): re-point task authoring and review references to issues
gsvgit Sep 25, 2026
511704a
docs(128-S4): transfer user guidance to task issue comments
gsvgit Sep 25, 2026
7375e24
docs(128-S5): move closing keywords to the last subtask's commit
gsvgit Sep 25, 2026
651b4f4
docs(128-S6): migrate open tasks to issues and archive tasks.md
gsvgit Sep 25, 2026
3826408
docs(128): mark all subtasks done in the detailed plan
gsvgit Sep 25, 2026
9a649f0
docs(131): record the consistency-fix batch in the global plan
gsvgit Sep 26, 2026
60f30b7
docs(131-S1): make the FSA canonical grammar match the distributed vf…
gsvgit Sep 26, 2026
a149718
docs(131): mark S1 done in the detailed plan
gsvgit Sep 26, 2026
77877a5
docs(131-S2): move the link check out of the local quality gate
gsvgit Sep 26, 2026
fc852cc
docs(131): mark S2 done in the detailed plan
gsvgit Sep 26, 2026
e003198
docs(133): write the detailed plan and mark #131 done in the global plan
gsvgit Sep 26, 2026
467fe08
docs(133-S1): re-point all download links to the 6.0.0 dataset prefix
gsvgit Sep 26, 2026
271861f
docs(133-S2): refresh the Size (MB) columns against the 6.0.0 archives
gsvgit Sep 26, 2026
a94b8bd
docs(133-S3): update stale prefix references in utils docs and AGENTS.md
gsvgit Sep 26, 2026
980fdec
docs(133): mark all subtasks done in the detailed plan
gsvgit Sep 26, 2026
224a70d
docs(132): write the detailed plan for the changelog completion
gsvgit Sep 26, 2026
b9dfce3
docs(132-S1): record the new capabilities in the changelog
gsvgit Sep 26, 2026
776bb34
docs(132-S2): record the 6.0.0 dataset move and removed download APIs
gsvgit Sep 26, 2026
cf91b16
docs(132): mark all subtasks done in the detailed plan
gsvgit Sep 26, 2026
90d7d16
docs(134): write the detailed plan for the scratch cleanup
gsvgit Sep 26, 2026
0363569
chore(134-S1): ignore test.csv alongside the other doctest scratch files
gsvgit Sep 26, 2026
1dae2c5
docs(134): mark all subtasks done in the detailed plan
gsvgit Sep 26, 2026
e2dcf92
docs: mark the consistency-fix issues done in the global plan
gsvgit Sep 26, 2026
5a775ee
docs: correct the task 48 entry in the global plan
gsvgit Sep 26, 2026
c5d2745
docs(135): write the detailed plan and point task 49 at issue #135
gsvgit Sep 26, 2026
cab6ccb
refactor(135-S1): restructure grammars/ into queries/{cfpq,rpq,mcfpq}/
gsvgit Sep 26, 2026
6bcd033
docs(135): mark S1 done in the detailed plan
gsvgit Sep 26, 2026
b3d81f2
refactor(135-S2): rename the package cfpq_data to flpq_data
gsvgit Sep 26, 2026
eb54a55
docs(135): mark S2 done in the detailed plan
gsvgit Sep 26, 2026
7456898
refactor(135-S3): rename download/DATASET with deprecated aliases
gsvgit Sep 26, 2026
8cef416
docs(135): mark S3 done in the detailed plan
gsvgit Sep 26, 2026
a901566
refactor(135-S4): bump VERSION to 6.0.0 and record the rename in the …
gsvgit Sep 26, 2026
b7e63c8
docs(135): mark S4 done in the detailed plan
gsvgit Sep 26, 2026
869d14d
docs(135-S5): update README, AGENTS.md, skills, and license for flpq_…
gsvgit Sep 26, 2026
e310672
docs(135): mark S5 done in the detailed plan
gsvgit Sep 26, 2026
96c25f3
docs(135): correct the S2 commit hash in the plan
gsvgit Sep 26, 2026
06f3eda
docs(plan): mark task 49 done in the global plan
gsvgit Sep 26, 2026
d9b8e24
docs(137): write the detailed plan and point task 50 at issue #137
gsvgit Sep 26, 2026
9de586b
docs(139): rewrite the detailed plan with decided design
gsvgit Oct 3, 2026
81728f7
feat(139-S1): serve reachable_pairs CSV from a versioned S3 path
gsvgit Oct 3, 2026
dc43003
docs(139): mark S1 done in the detailed plan
gsvgit Oct 3, 2026
652fc30
test(139-S2): cover the versioned reachable_pairs storage
gsvgit Oct 3, 2026
7d2587b
docs(139): mark S2 done in the detailed plan
gsvgit Oct 3, 2026
b88a5b8
docs(139-S3): document the versioned reachable_pairs CSV
gsvgit Oct 3, 2026
f4990ef
docs(139): mark S3 done in the detailed plan
gsvgit Oct 3, 2026
33e0248
chore(139-S4): publish and verify the versioned reachable_pairs CSV
gsvgit Oct 3, 2026
69fe74c
docs(146): write the detailed plan and add task 146 to the global plan
gsvgit Oct 3, 2026
caf7af6
fix(146-S1): reject indexed stored reverses in the archive checker
gsvgit Oct 3, 2026
e0762da
docs(146): mark S1 done in the detailed plan
gsvgit Oct 3, 2026
c80988d
feat(146-S2): add the strip-stored-reverses archive tool
gsvgit Oct 3, 2026
22fa3f1
docs(146): mark S2 done in the detailed plan
gsvgit Oct 3, 2026
270d09b
chore(146-S3): strip stored reverses from 7 java_points_to archives a…
gsvgit Oct 3, 2026
eba3df1
docs(146): mark S3 done in the detailed plan
gsvgit Oct 3, 2026
577126f
docs(146-S4): drop stored reverse rows from the 7 java-points-to per-…
gsvgit Oct 3, 2026
e0df78d
docs(146): mark S4 done in the detailed plan
gsvgit Oct 3, 2026
9f43bcc
docs(146-S5): refresh the java-points-to size column and record the fix
gsvgit Oct 3, 2026
7ebc513
docs(146): mark S5 done in the detailed plan
gsvgit Oct 3, 2026
35513a7
docs(137-S1): move dataset docs to per-class query sections
gsvgit Oct 3, 2026
f03cd35
docs(137): mark S1 done in the detailed plan
gsvgit Oct 3, 2026
5869cdc
feat(137-S2): generate per-class applicable-graphs lists from the CSV
gsvgit Oct 3, 2026
e140a6a
docs(137): mark S2 done in the detailed plan
gsvgit Oct 3, 2026
ed40952
feat(137-S3): require a CSV registry row for every merged query
gsvgit Oct 3, 2026
9f7a74e
docs(137): mark S3 done in the detailed plan
gsvgit Oct 3, 2026
4584106
docs(137-S4): remove the benchmarks category and document the site hi…
gsvgit Oct 3, 2026
71dae6f
docs(137): mark S4 done in the detailed plan
gsvgit Oct 3, 2026
b2544d0
docs(149): write the detailed plan and replace the global plan with t…
gsvgit Oct 5, 2026
45bd1aa
docs(149-S1): record the core rework design in docs/flpq.rst
gsvgit Oct 5, 2026
5cc9169
docs(149): mark S1 done in the detailed plan
gsvgit Oct 5, 2026
fb6985c
docs(149-S2): update the AGENTS.md package layout and the changelog
gsvgit Oct 5, 2026
dd7c0d2
docs(149): mark S2 done in the detailed plan
gsvgit Oct 5, 2026
85e26ed
docs(150): write the detailed plan for the graph registry task
gsvgit Oct 5, 2026
d57874b
feat(150-S1): add DATASET_VERSION and the registry generator
gsvgit Oct 5, 2026
7499efc
docs(150): mark S1 done in the detailed plan
gsvgit Oct 5, 2026
7600cc2
feat(150-S2): generate and commit the bundled registry.json
gsvgit Oct 5, 2026
6b84996
docs(150): mark S2 done in the detailed plan
gsvgit Oct 5, 2026
5c7e98b
feat(150-S3): add the network-free metadata API
gsvgit Oct 5, 2026
3a602fe
docs(150): mark S3 done in the detailed plan
gsvgit Oct 5, 2026
f0cdd7d
feat(150-S4): drop GRAPHS/DATASET; validate names against the registry
gsvgit Oct 5, 2026
6aba3d7
docs(150): mark S4 done in the detailed plan
gsvgit Oct 5, 2026
ea5750b
docs(150): mark task 150 done in the global plan
gsvgit Oct 5, 2026
3f9c2c2
docs(151): write the detailed plan for the machine-global cache
gsvgit Oct 5, 2026
f8c2760
feat(151-S1): add platformdirs and the machine-global cache module
gsvgit Oct 5, 2026
0e3ab98
docs(151): mark S1 done in the detailed plan
gsvgit Oct 5, 2026
4fbc85e
feat(151-S2): lazy graph_dir accessor with sha256-verified cache inst…
gsvgit Oct 5, 2026
6b03ac2
docs(151): mark S2 done in the detailed plan
gsvgit Oct 5, 2026
a630af9
feat(151-S3): resolve reachable_pairs.csv from the per-version cache
gsvgit Oct 5, 2026
13152fa
docs(151): mark S3 done in the detailed plan
gsvgit Oct 5, 2026
ae3762d
feat(151-S4): drop DATA/GRAPHS_DIR; migrate references to the cache
gsvgit Oct 5, 2026
a25186a
docs(151): mark S4 done in the detailed plan
gsvgit Oct 5, 2026
e4f14cf
docs(151): mark task 151 done in the global plan
gsvgit Oct 5, 2026
755e16d
docs(152): write the detailed plan for the cache manipulation API
gsvgit Oct 5, 2026
c318590
feat(152-S1): add clear_cache to the cache manipulation API
gsvgit Oct 5, 2026
9fa8942
docs(152): mark S1 done in the detailed plan
gsvgit Oct 5, 2026
b9e5132
docs(152): mark task 152 done; record the stale coverage.json pitfall
gsvgit Oct 5, 2026
4ccd7f2
docs: record the docstring cross-reference convention
gsvgit Oct 5, 2026
4935e85
ci: target Dependabot version updates at dev
gsvgit Oct 5, 2026
f084360
docs(153-S1): record the format-conversion design in the graphs page
gsvgit Oct 5, 2026
ceeb631
feat(153-S2): add streaming edge readers for the mtx, txt, and rdf fo…
gsvgit Oct 5, 2026
89ba9ab
feat(153-S3): add streaming edge writers for the txt, mtx, rdf, and .…
gsvgit Oct 5, 2026
20d46de
feat(153-S4): drop CSV and reimplement graph I/O on the edge streams
gsvgit Oct 5, 2026
224d726
docs(153): mark S4 done in the detailed plan
gsvgit Oct 5, 2026
ca721c5
feat(153-S5): add the convert_graph dispatcher over the edge streams
gsvgit Oct 5, 2026
11837e0
docs(153): mark S5 done and record the #138 verification in the plan
gsvgit Oct 5, 2026
f62a351
docs(153-S6): complete the docs for streaming format conversion
gsvgit Oct 5, 2026
4007664
docs(153): mark S6 done in the detailed plan
gsvgit Oct 5, 2026
7960654
fix(153-S6): make mtx_dir_from_edges all-or-nothing on failure
gsvgit Oct 5, 2026
7c388d3
docs(153): record the code-review outcome in the detailed plan
gsvgit Oct 5, 2026
c9e875d
fix(153): close the open temp handle before unlinking on failure
gsvgit Oct 6, 2026
ccf69ab
fix(153): document convert_graph under its full module path
gsvgit Oct 6, 2026
f05d3b0
docs(153): add the fresh docs build target and stale-artifact policy
gsvgit Oct 6, 2026
5913eff
fix: point all website and repo URLs at the renamed FLPQ_Data
gsvgit Oct 6, 2026
88a5ab3
docs(154): write the detailed plan for TestPyPI dev-version publishing
gsvgit Oct 6, 2026
cf1299f
feat(154-S1): add a dev-version setter for TestPyPI pre-publish
gsvgit Oct 6, 2026
e8bd4af
ci(154-S2): give each TestPyPI PR run a unique dev version
gsvgit Oct 6, 2026
729838c
docs(154-S3): document the TestPyPI dev-version pre-publish
gsvgit Oct 6, 2026
20341d2
docs(154): mark S1-S3 done in the detailed plan
gsvgit Oct 6, 2026
43670e6
Merge origin/master into dev to make the release PR mergeable
gsvgit Oct 6, 2026
f1f11db
docs(156): write the detailed plan for the CFPQ_Data to FLPQ_Data rename
gsvgit Oct 6, 2026
7248e21
docs(156-S1): rename project to FLPQ_Data in packaging metadata and t…
gsvgit Oct 6, 2026
56db984
docs(156): mark S1 done in the detailed plan
gsvgit Oct 6, 2026
0fac7cf
docs(156-S2): rename project to FLPQ_Data in the documentation
gsvgit Oct 6, 2026
72be12d
docs(156): mark S2 done in the detailed plan
gsvgit Oct 6, 2026
afdfe61
docs(156-S3): rename the logo file to FLPQDataLogo.svg
gsvgit Oct 6, 2026
cd7cd85
docs(156): mark S3 done in the detailed plan
gsvgit Oct 6, 2026
07b6810
ci(156-S4): rename project to FLPQ_Data in CI step names and contribu…
gsvgit Oct 6, 2026
6aca416
docs(156): mark S4 done in the detailed plan
gsvgit Oct 6, 2026
a16128f
docs(156-S5): rename project to FLPQ_Data in the skill descriptions
gsvgit Oct 6, 2026
2176c53
docs(156): mark S5 done in the detailed plan
gsvgit Oct 6, 2026
a24bcc5
docs(156): fix line wrapping in AGENTS.md after the rename
gsvgit Oct 6, 2026
f03a4cd
docs(156): record the code-review outcome in the detailed plan
gsvgit Oct 6, 2026
b51918a
docs(157-S4): record the uniprot sparse-grammar experiment
gsvgit Oct 8, 2026
bd4fc95
docs(157): mark S4 done in the detailed plan
gsvgit Oct 8, 2026
73a9073
feat(130-S6): fill the 56 big-graph reachable-pair reference results
gsvgit Oct 13, 2026
423abbb
docs(130): mark S5 and S6 done in the detailed plan
gsvgit Oct 13, 2026
0712223
docs: record the FSA canonical-grammar fix in the changelog
gsvgit Oct 13, 2026
ade726d
fix: keep the blank line after the promoted header in bump_version.py
gsvgit Oct 13, 2026
5e8b2be
chore: release 6.0.0
gsvgit Oct 13, 2026
ea032eb
docs(161): write the detailed plan for removing the Version row from …
gsvgit Oct 13, 2026
cc13b4e
docs(161-S1): remove the Version row from the 113 current per-graph p…
gsvgit Oct 13, 2026
3212cbc
docs(161): mark S1 done in the detailed plan
gsvgit Oct 13, 2026
850f392
docs(161-S2): remove the Version row from the 54 historical old_graph…
gsvgit Oct 13, 2026
0e073aa
docs(161): mark S2 done in the detailed plan
gsvgit Oct 13, 2026
ed1d8e5
docs(161-S3): record the Version-row removal in the changelog
gsvgit Oct 13, 2026
f814ff3
docs(161): mark S3 done in the detailed plan
gsvgit Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- OS: `[e.g. Ubuntu 20.04]`
- CFPQ_Data: `[e.g. 22]`
- FLPQ_Data: `[e.g. 22]`
- Python: `[e.g. 3.8]`
- Other important stuff versions

Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/grammar-add-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ assignees: rustam-azimov, vadyushkins
| | |
|-----------|------------------------------------------------------------------------|
| Full Name | ``<Specify the full name of the grammar template>`` |
| Version | ``<Current version of CFPQ_Data>`` |
| Version | ``<Current version of FLPQ_Data>`` |
| Class | ``<Specify the formal grammar class to which the grammar belongs>`` |
| Kind | ``<Specify the kind of problem for which this grammar can be used>`` |
| Origin | [link](``<Link to download the grammar or link to the grammar info>``) |
Expand Down
57 changes: 48 additions & 9 deletions .github/ISSUE_TEMPLATE/graph-add-template.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---
name: ADD NEW GRAPH
about: Suggest new graph to this project
title: "[NEW GRAPH] <Graph brief description>"
Expand All @@ -12,13 +11,45 @@ assignees: rustam-azimov, vadyushkins
## Info
| | |
|---|---|
| Full Name | ``<Specify the full name of the graph>`` |
| Version | ``<Current version of CFPQ_Data>`` |
| Origin | [link](``<Link to download the graph>``) |
| Type | ``<new graph (full archive) or new queries for an existing graph (partial archive)>`` |
| Full Name | ``<The full name of the graph — for a partial archive, the name of the existing graph being extended>`` |
| Category | ``<Existing category name, or "new: <proposed name>" for a new category (new graphs only)>`` |
| Version | ``<Current version of FLPQ_Data>`` |
| Archive | [link](``<Google Drive link to the archive — <name>.tar.gz, full or partial>``) |

## Data format

The archive must follow the standard layout described in the "File structure" section of the [Graphs page](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/index.html): `<name>.tar.gz` unpacks to `<name>/{README.md, grammar/, graph/}`, where `graph/` holds one Boolean MatrixMarket pattern file per edge label.
The main way to provide data is a **Google Drive link** to an archive prepared per the structure-validation tool. Two kinds of archives exist (both documented in the "File structure" section of the [Graphs page](https://formallanguageconstrainedpathquerying.github.io/FLPQ_Data/graphs/index.html)):

- **Full archive** — a new graph: `<name>.tar.gz` unpacks to a self-contained directory with `README.md`, `graph/` (one Boolean MatrixMarket pattern file per stored edge label), and `queries/` (one directory per query in `cfpq/`, `rpq/`, or `mcfpq/`; each query directory holds every representation of the query — `.cnf`/`.rsm`, `.re`/`.rsm` (regular only), or `.mcfg` — plus one `results.mtx` with the constrained reachability facts).
- **Partial archive** — new queries for an existing graph: `<name>.tar.gz` unpacks to a directory containing only `queries/` — the new query directories (same layout) plus a `README.md` fragment with one `## <class>/<query>` section per new query.

Validate the archive before sharing it:

```
python utils/check_archive_structure.py <name>.tar.gz # full archive
python utils/check_archive_structure.py <name>.tar.gz --partial # partial archive
```

A partial archive is merged into the existing graph archive by the maintainer (`python utils/merge_archive.py EXISTING.tar.gz PARTIAL.tar.gz -o <name>.tar.gz`), re-validated, and uploaded. The query file formats — including the recursive state machine (`.rsm`) format — are documented on the [FLPQ design page](https://formallanguageconstrainedpathquerying.github.io/FLPQ_Data/flpq.html).

## Description document

**Full archive.** The archive's `README.md` must answer all of these questions (one `##` section each):
| | |
|---|---|
| What is this graph? | ``<A short description of the domain and what the graph models>`` |
| Source | ``<Where the data comes from (paper, dataset, tool) and the full citation>`` |
| Construction | ``<How the graph was built, extracted, or generated (method, parameters)>`` |
| Nodes | ``<What a node represents and the total number of nodes>`` |
| Edges and labels | ``<What each label family means and the number of edges per label>`` |
| Query classes | ``<Which of RPQ, CFPQ, MCFPQ apply to this graph and why>`` |
| License | ``<The license of the data>`` |
| Caveats | ``<Known limitations or approximations, or "None">`` |

**Partial archive.** Instead of a full description document, the `queries/README.md` fragment carries one `## <class>/<query>` section per new query, each describing the language (in words and/or in LaTeX) and its purpose on this graph.

*New graphs only — a partial archive adds no nodes or edges.*

## Graph Statistics
| Num Nodes | Num Edges |
Expand All @@ -28,12 +59,20 @@ The archive must follow the standard layout described in the "File structure" se
## Edges Statistics
| Edge Label | Num Edge Label |
|---:|---:|
| ``<The type of the edge label of the new graph >`` | ``<The number of edges in the new graph of this type>`` |
| ``<The type of the edge label of the new graph >`` | ``<The number of edges in the graph of this type>`` |

List the stored labels only (no `_r` reversed-edge rows). A family of indexed labels (e.g. `load_0`, ..., `load_857`) is listed once with a placeholder subscript (e.g. `load_f`) and a note listing the index set.

## Canonical grammars
## Queries

Canonical grammars are documented on the category page, not on the per-graph page. Pick the case that applies:

1. **Graph for an existing category** — name the grammar(s) from the category's "Canonical grammars" section that apply to this graph; they become the table column(s) filled in for the new row. No new grammar text on the site.
2. **New grammar for an existing category** — provide the grammar below; it will be added to the category page and a new column to its table.
3. **Graph for a new category** — provide the canonical grammar(s) below; a new category page will be created with them.

Every query you provide must ship inside the archive (a full archive ships all queries of the graph; a partial archive ships the new ones): one directory per query in `queries/cfpq/`, `queries/rpq/`, or `queries/mcfpq/`, holding every representation of the query (`.cnf`/`.rsm`, `.re`/`.rsm` — regular only, or `.mcfg`) plus one `results.mtx` with the constrained reachability facts (a Boolean pattern matrix with the graph's dimensions; an entry `(i, j)` means some path from node `i` to node `j` satisfies the query). Each query directory is described in a `## <class>/<query>` section of `queries/README.md`. A query may only use labels of this graph.

<LaTeX format of grammar>
<LaTeX format of grammar (only for cases 2 and 3)>

<Pyformlang CFG format of grammar>
<File-format text of the grammar — .cnf, .rsm, .re, or .mcfg (only for cases 2 and 3)>
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE/new_grammar.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
| | |
|-----------|------------------------------------------------------------------------|
| Full Name | ``<Specify the full name of the grammar template>`` |
| Version | ``<Current version of CFPQ_Data>`` |
| Version | ``<Current version of FLPQ_Data>`` |
| Class | ``<Specify the formal grammar class to which the grammar belongs>`` |
| Kind | ``<Specify the kind of problem for which this grammar can be used>`` |
| Origin | [link](``<Link to download the grammar or link to the grammar info>``) |
Expand Down
56 changes: 48 additions & 8 deletions .github/PULL_REQUEST_TEMPLATE/new_graph.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,45 @@
## Info
| | |
|---|---|
| Full Name | ``<Specify the full name of the graph>`` |
| Version | ``<Current version of CFPQ_Data>`` |
| Origin | [link](``<Link to download the graph>``) |
| Type | ``<new graph (full archive) or new queries for an existing graph (partial archive)>`` |
| Full Name | ``<The full name of the graph — for a partial archive, the name of the existing graph being extended>`` |
| Category | ``<Existing category name, or "new: <proposed name>" for a new category (new graphs only)>`` |
| Version | ``<Current version of FLPQ_Data>`` |
| Archive | [link](``<Google Drive link to the archive — <name>.tar.gz, full or partial>``) |

## Data format

The archive must follow the standard layout described in the "File structure" section of the [Graphs page](https://formallanguageconstrainedpathquerying.github.io/CFPQ_Data/graphs/index.html): `<name>.tar.gz` unpacks to `<name>/{README.md, grammar/, graph/}`, where `graph/` holds one Boolean MatrixMarket pattern file per edge label.
The main way to provide data is a **Google Drive link** to an archive prepared per the structure-validation tool. Two kinds of archives exist (both documented in the "File structure" section of the [Graphs page](https://formallanguageconstrainedpathquerying.github.io/FLPQ_Data/graphs/index.html)):

- **Full archive** — a new graph: `<name>.tar.gz` unpacks to a self-contained directory with `README.md`, `graph/` (one Boolean MatrixMarket pattern file per stored edge label), and `queries/` (one directory per query in `cfpq/`, `rpq/`, or `mcfpq/`; each query directory holds every representation of the query — `.cnf`/`.rsm`, `.re`/`.rsm` (regular only), or `.mcfg` — plus one `results.mtx` with the constrained reachability facts).
- **Partial archive** — new queries for an existing graph: `<name>.tar.gz` unpacks to a directory containing only `queries/` — the new query directories (same layout) plus a `README.md` fragment with one `## <class>/<query>` section per new query.

Validate the archive before sharing it:

```
python utils/check_archive_structure.py <name>.tar.gz # full archive
python utils/check_archive_structure.py <name>.tar.gz --partial # partial archive
```

A partial archive is merged into the existing graph archive by the maintainer (`python utils/merge_archive.py EXISTING.tar.gz PARTIAL.tar.gz -o <name>.tar.gz`), re-validated, and uploaded. The query file formats — including the recursive state machine (`.rsm`) format — are documented on the [FLPQ design page](https://formallanguageconstrainedpathquerying.github.io/FLPQ_Data/flpq.html).

## Description document

**Full archive.** The archive's `README.md` must answer all of these questions (one `##` section each):
| | |
|---|---|
| What is this graph? | ``<A short description of the domain and what the graph models>`` |
| Source | ``<Where the data comes from (paper, dataset, tool) and the full citation>`` |
| Construction | ``<How the graph was built, extracted, or generated (method, parameters)>`` |
| Nodes | ``<What a node represents and the total number of nodes>`` |
| Edges and labels | ``<What each label family means and the number of edges per label>`` |
| Query classes | ``<Which of RPQ, CFPQ, MCFPQ apply to this graph and why>`` |
| License | ``<The license of the data>`` |
| Caveats | ``<Known limitations or approximations, or "None">`` |

**Partial archive.** Instead of a full description document, the `queries/README.md` fragment carries one `## <class>/<query>` section per new query, each describing the language (in words and/or in LaTeX) and its purpose on this graph.

*New graphs only — a partial archive adds no nodes or edges.*

## Graph Statistics
| Num Nodes | Num Edges |
Expand All @@ -19,12 +51,20 @@ The archive must follow the standard layout described in the "File structure" se
## Edges Statistics
| Edge Label | Num Edge Label |
|---:|---:|
| ``<The type of the edge label of the new graph >`` | ``<The number of edges in the new graph of this type>`` |
| ``<The type of the edge label of the new graph >`` | ``<The number of edges in the graph of this type>`` |

List the stored labels only (no `_r` reversed-edge rows). A family of indexed labels (e.g. `load_0`, ..., `load_857`) is listed once with a placeholder subscript (e.g. `load_f`) and a note listing the index set.

## Canonical grammars
## Queries

Canonical grammars are documented on the category page, not on the per-graph page. Pick the case that applies:

1. **Graph for an existing category** — name the grammar(s) from the category's "Canonical grammars" section that apply to this graph; they become the table column(s) filled in for the new row. No new grammar text on the site.
2. **New grammar for an existing category** — provide the grammar below; it will be added to the category page and a new column to its table.
3. **Graph for a new category** — provide the canonical grammar(s) below; a new category page will be created with them.

Every query you provide must ship inside the archive (a full archive ships all queries of the graph; a partial archive ships the new ones): one directory per query in `queries/cfpq/`, `queries/rpq/`, or `queries/mcfpq/`, holding every representation of the query (`.cnf`/`.rsm`, `.re`/`.rsm` — regular only, or `.mcfg`) plus one `results.mtx` with the constrained reachability facts (a Boolean pattern matrix with the graph's dimensions; an entry `(i, j)` means some path from node `i` to node `j` satisfies the query). Each query directory is described in a `## <class>/<query>` section of `queries/README.md`. A query may only use labels of this graph.

<LaTeX format of grammar>
<LaTeX format of grammar (only for cases 2 and 3)>

<Pyformlang CFG format of grammar>
<File-format text of the grammar — .cnf, .rsm, .re, or .mcfg (only for cases 2 and 3)>
1 change: 1 addition & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
target-branch: "dev"
schedule:
interval: "monthly"
ignore:
Expand Down
28 changes: 10 additions & 18 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,22 @@ jobs:
steps:
- uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
- name: Set up uv with Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v10.1.0
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: |
pip install poetry

- name: Install dependencies with Poetry
run: |
poetry install --no-interaction --no-ansi --with dev,test
# Why these flags: see "Development setup" in docs/developer.rst.
- name: Install dependencies with uv
run: uv sync --frozen --all-groups

- name: Show installed packages
run: poetry show

- name: Install packages
run: |
python -m pip install .

run: uv tree

- name: Test CFPQ_Data with coverage
run: |
poetry run pytest --cov=cfpq_data --doctest-modules -vv -s cfpq_data tests
# Per-metric gate rationale: see "Test pipeline" in docs/developer.rst.
# term-missing keeps the uncovered lines in the CI log.
- name: Test FLPQ_Data with coverage (line and branch >= 95%)
run: uv run pytest --cov=flpq_data --cov-report=term-missing --cov-report=json && uv run python utils/check_coverage.py

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v7
22 changes: 7 additions & 15 deletions .github/workflows/deploy_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,20 @@ jobs:
steps:
- uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
- name: Set up uv with Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v10.1.0
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: |
pip install poetry

- name: Install dependencies with Poetry
run: |
poetry install --no-interaction --no-ansi --with docs
# Why these flags: see "Development setup" in docs/developer.rst.
- name: Install dependencies with uv
run: uv sync --frozen --all-groups

- name: Show installed packages
run: poetry show

- name: Install packages
run: |
poetry run pip install .
run: uv tree

- name: Build
run: poetry run make -C docs/ html
run: uv run make -C docs/ html

- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4
Expand Down
29 changes: 10 additions & 19 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,22 @@ jobs:
steps:
- uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
- name: Set up uv with Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v10.1.0
with:
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: |
pip install poetry

- name: Install dependencies with Poetry
run: |
poetry install --no-interaction --no-ansi --with docs
# Why these flags: see "Development setup" in docs/developer.rst.
- name: Install dependencies with uv
run: uv sync --frozen --all-groups

- name: Show installed packages
run: poetry show

- name: Install packages
run: poetry run pip install .
run: uv tree

# No-warnings policy: the build runs with -W --keep-going (see
# docs/Makefile), so any warning — including an unresolved
# cross-reference under nitpicky — exits non-zero on its own.
# No-warnings policy: see "Docs build and deploy" in docs/developer.rst.
- name: Build
run: poetry run make -C docs/ html
run: uv run make -C docs/ html

# The linkcheck builder exits non-zero on broken or timed-out links.
# Link check policy: see "Docs build and deploy" in docs/developer.rst.
- name: Check links
run: poetry run sphinx-build -b linkcheck docs docs/_build/linkcheck
run: uv run sphinx-build -b linkcheck docs docs/_build/linkcheck
24 changes: 16 additions & 8 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,28 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ 3.9 ]
python-version: [ 3.11 ]
steps:
- uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
- name: Set up uv with Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v10.1.0
with:
python-version: ${{ matrix.python-version }}

- name: Install pre-commit
run: |
python -m pip install pre-commit==3.6.2
pre-commit install
# Why these flags: see "Development setup" in docs/developer.rst.
- name: Install dependencies with uv
run: uv sync --frozen --all-groups

- name: Run pre-commit
run: |
pre-commit run --all-files --color always --verbose --show-diff-on-failure
uv run pre-commit run --all-files --color always --verbose --show-diff-on-failure

# The pre-commit pass already runs ruff and ty as hooks; these steps
# make the type checks explicit — Pyright is the stricter checker and
# only runs here.
- name: Type check with ty
run: uv run ty check

- name: Type check with Pyright
run: uv run pyright
Loading
Loading