Git-native issue tracking · the origin of the estate's graph philosophy

The issues are files.
The files are a graph.

A node is a JSON file on disk. An edge is a typed verb stored on both endpoints. The folder hierarchy is the containment structure. Nothing runs — no server, no daemon, no database — so the tracker lives inside the repository it tracks, versions with it, branches with it, and can be read by cat, grep and find. That makes it legible to a human, diffable by git, and directly operable by an agent.

Five minutes with the CLI → The agent mode, no install → What actually ships →

What actually ships, above the fold

This is the table the ecosystem cannot produce for itself. Queried live against PyPI on 22 August 2026; every wheel downloaded and unzipped. Two packages are real and installable. Two are published but empty. Four are not published at all. Here is the line.

PyPI packageLatestRepoVerdictWhat is in the wheel
issues-fs0.7.0v0.7.1real103 files · 98 source files · 5,401 LOC · 604 tests. An importable Python API — no CLI and no HTTP in this package
issues-fs-cli0.3.0v0.3.0real23 files · 14 commands · 94 tests. The most credible end-user surface
issues-fs-service0.2.0v0.2.0empty shell8 files, no FastAPI code, no routes — while its PyPI summary reads “FastAPI server with REST endpoints”
issues-fs-service-client-python0.2.0v0.2.0empty shell8 files, no client, no schemas — while its summary reads “API schemas and Python client”
issues-fs-service-uiv0.2.1404142 files in the repo, unpublished. The largest UI artefact in the ecosystem
issues-fs-docsv0.1.6404Its README shows a pip install line and a PyPI badge that 404s
issues-fs-devv0.3.2404The development umbrella, with 19 submodules
issues-fs-dev-utilsv0.1.1404535 LOC, 19 tests, a good user guide — and absent from every ecosystem map

Why: CI publishes to PyPI only from main, and seven of the eight repositories sit on dev well ahead of main. Issues-FS__Docs's main is still at Initial commit, 24 commits behind — which is exactly why the docs package 404s. The whole table, with the release mechanism.

The full picture, package by package → · What the READMEs get wrong →

The part that works today

Every command below was verified against the CLI source, not against a README.

pip install issues-fs-cli

issues-fs init                                              # creates .issues/
issues-fs types init                                        # 12 node types, 10 link types
issues-fs create task "Write the /shipped page" --priority high --tags site,docs
issues-fs create bug  "PyPI badge 404s in the Docs README"
issues-fs link Task-1 blocks Bug-1
issues-fs list --output table
issues-fs show Task-1 --depth 1
issues-fs list --for-agent                                  # same data, JSON, for an agent

The walkthrough, with what each command writes to disk →

Three agent-operable surfaces. One of them is documented.

This is the site's most distinctive claim, and no document in the corpus makes it. No other project in the estate has three.

Surface 1

Issues-FS-lite

Markdown with YAML front-matter, three folders, four mv operations. No install, no Python, no CLI, no runtime. For an agent that has a filesystem and nothing else.

specification only
Surface 2

The .issues flat-file DSL

A line-oriented text format parsed into nodes. 11 source files, ~55 tests, three live example files, wired into the repository API — and zero prose documentation anywhere until this page.

built and tested
Surface 3

--for-agent JSON

Every one of the 14 CLI commands takes --for-agent, which forces JSON output regardless of the configured format. It is the story, not a footnote.

shipping in 0.3.0

Numbers this site stands on

Measured, not quoted. The node and edge counts come from walking every issue.json; the test counts from counting test functions. The READMEs are wrong about the last one — two of them, differently.

71nodes in the flagship live graph, with 141 link entriesSGraph Send
604test functions across 45 files in the core packagemeasured
14CLI commands, every one taking --for-agentfrom source
4storage backends, all real: memory, local disk, SQLite, zipfrom the enum
147nodes across the four live graphs in the ecosystemmeasured
1.5lines of test per line of source in the core package8,213 / 5,401

Why a graph rather than a schema of fields

The philosophy underneath Issues-FS is that a node has no inherent meaning; meaning is discovered through the edges you can trace from it. That is why the type system is a graph of typed relationships rather than a schema of fields, and why an edge type carries domain and range constraintsblocks is not a string in a list, it is a verb with a stated inverse and a stated set of endpoints it may join.

That thinking was written here. thinking-in-graphs.md is dated 5 February 2026 and was written for Issues-FS; it reached SGraph Send on 11 June, four months later, and the whole estate now runs on it.

The boundary, stated plainly. graphs.sgit.ai owns the philosophy and teaches it at length, including as a book. This site owns the implementation — and the origin. The foundational five get one screen each here, with a link there for the argument; everything unique to Issues-FS — the schemas, the CLI, lite mode, the DSL, the roles, the live graphs — is only here. The full boundary map.

What this site says that the corpus does not

Two published wheels are empty

issues_fs_service-0.2.0 contains an __init__.py, a version file and dist-info metadata. That is all. Its PyPI summary describes a FastAPI server. The house move is to say so, not to hide it.

Four load-bearing README claims are false

A storage backend that is not in the enum, an integration with zero imports, a package that was never built, and two different wrong test counts. All of them, with what was measured instead.

The index is a cache, not a source

_index.json says 22 issues where the disk has 24. The largest and healthiest graph in the ecosystem has no _index.json at any level and works fine, because the CLI walks the tree. That is an argument, not an embarrassment.

The lexicon was never built

Roughly 7,000 words across two versions describe a package required by every Issues-FS repository. It has no repo, no PyPI entry and appears in no pyproject.toml. Published as argued design, labelled as such.

For an agent

Issues-FS is a git-native tracker with three operable surfaces. If you have a filesystem and no tooling, use lite: issues/open|blocked|done/NNN-slug.md with YAML front-matter, and four mv operations — see /lite/. If issues-fs is on the path, pass --for-agent to any of the 14 commands to force JSON. Read another agent's issues/; never write into it. Do not rely on _index.json — walk the tree. Four claims in the upstream READMEs are false; check them here before repeating any of them.