docs: align README with project-docs Gitea template

Add Demonstrated Skills & Tech Stack and System Architecture (Mermaid +
Archify map link) sections. Rename Install to Quick Start and group manual
commands under Usage & Configuration.
This commit is contained in:
2026-10-13 12:27:14 +11:00
parent 4f92d3782b
commit eaa7761437

View File

@@ -11,6 +11,40 @@ ships a small purpose-built parser so it deploys onto hosts without pip
---
## 🛠 Demonstrated Skills & Tech Stack
- **Core Technologies**: Python 3.10+ using the **standard library only** — no
PyYAML, no pip dependencies; systemd user services; YAML frontmatter.
- **Key Tools**: TypeSafe JEV (`POST api.typesafe.ai/v1/systemone`) for semantic
classification, stdlib `urllib` for HTTP, `mmdc` + Archify for diagrams,
`rsync` for deployment, Git + Gitea for version control.
- **Engineering Capabilities**: a deterministic rule engine with a probabilistic
second tier, atomic file writes (`tempfile` + `os.replace`), idempotent index
updates, a human-in-the-loop approval gate, and a purpose-built YAML parser
written to avoid runtime dependencies on NixOS hosts.
## 📐 System Architecture
```mermaid
flowchart LR
A["Sam writes a note"] --> B["010 inbox/"]
B --> C{"Watcher<br/>systemd user service<br/>polls every 10s"}
C --> D["Tier 1 — rules<br/>folder + keyword hints<br/>user tags win"]
D -->|"confident"| F["Proposal"]
D -->|"unsure"| E["Tier 2 — TypeSafe JEV<br/>bucket + folder + tags"]
E --> F
F --> G["Proposal written<br/>into the note frontmatter"]
G --> H["Sam reviews in Obsidian"]
H -->|"ticks approved"| I["Writer"]
H -->|"edits folder first"| G
I --> J["Destination folder"]
I --> K["Table of Contents"]
```
*Interactive Architecture Map:* [maps.lab.audasmedia.com.au/obsidian-sorter/docs/obsidian-sorter-map.html](https://maps.lab.audasmedia.com.au/obsidian-sorter/docs/obsidian-sorter-map.html)
---
## The taxonomy (simplified 2026-09-24)
**The type of a note mirrors the folder it lives in.** Nothing is guessed from
@@ -56,7 +90,7 @@ which area it belongs to while it is still a project.
---
## Install
## 🚀 Quick Start
Nothing to install — pure standard library, Python 3.10+.
@@ -119,7 +153,9 @@ Logs: `~/.local/state/obsidian-sorter.log`
---
## Manual use
## 📝 Usage & Configuration
### Manual use
`obsidian-sort` is installed on `.27` (in `~/bin`):
@@ -139,9 +175,9 @@ python3 -m sorter --vault ~/obsidian --inbox "010 inbox" sort-inbox --jev --appl
---
## Usage reference
### Usage reference
### Read-only
#### Read-only
```bash
# Vault shape: counts, types, what needs classification
@@ -155,7 +191,7 @@ python3 -m sorter --vault ~/obsidian --inbox "010 inbox" \
propose "010 inbox/My Note.md" --jev
```
### Filing (writes)
#### Filing (writes)
Dry run by default — nothing is written without `--apply`.
@@ -189,7 +225,7 @@ Plan for: 010 inbox/50 Legendary Websites.md
- remove 010 inbox/50 Legendary Websites.md (moved out of inbox)
```
### Measuring the semantic tier
#### Measuring the semantic tier
```bash
python3 -m sorter --vault ~/obsidian --inbox "010 inbox" benchmark --all --quiet