mirror of
https://github.com/codician-team/growmos.git
synced 2026-08-18 06:47:17 +02:00
74 lines
3.3 KiB
Markdown
74 lines
3.3 KiB
Markdown
# `.growmos/` file format
|
|
|
|
All files are UTF-8, deterministic (sorted keys, sorted rows) and safe to commit. JSONL rows are
|
|
one JSON object per line.
|
|
|
|
## sources.jsonl
|
|
```json
|
|
{"id":"src_b33563055168","ref":"README.md","kind":"file","sha256":"…","title":"README.md",
|
|
"status":"extracted","added":"2026-08-17T10:00:00Z","updated":"…","extracted_at":"…",
|
|
"schema_version":1,"stats":{"entities":8,"relations":6}}
|
|
```
|
|
`kind` ∈ `file` (repo-relative path) · `url` · `text` (stdin/foreign file; body cached under `cache/`) · `note` (provenance label such as `session:2026-08-17`).
|
|
`status` ∈ `pending` · `extracted` · `note` · `missing`.
|
|
|
|
## mentions.jsonl (append-only)
|
|
```json
|
|
{"source":"src_…","chunk":0,"name":"A. Chen","type":"PERSON","description":"Approved ADR-001.","ts":"…","schema_version":1}
|
|
```
|
|
|
|
## entities.jsonl
|
|
```json
|
|
{"id":"person/alice-chen","name":"Alice Chen","type":"PERSON","description":"Owner of the Scheduler component.",
|
|
"sources":["src_a","src_b"],"mentions":2,"provisional":false,"created":"…","updated":"…","schema_version":1}
|
|
```
|
|
Ids are stable (`<type>/<slug-of-first-seen-name>`); `name` is the canonical display form and may change on resolution.
|
|
|
|
## aliases.jsonl
|
|
```json
|
|
{"alias":"A. Chen","type":"PERSON","entity":"person/alice-chen"}
|
|
```
|
|
|
|
## relations.jsonl
|
|
```json
|
|
{"id":"r_4e1920f801f6","source":"dependency/postgres","predicate":"replaces","target":"dependency/redis",
|
|
"sources":["src_a","src_b"],"confidence":2,"created":"…","updated":"…","schema_version":1,
|
|
"when":{"start":"2026-08","end":"ongoing"}}
|
|
```
|
|
`id` = hash of (source, normalized predicate, target). `confidence` = number of distinct sources (cross-document corroboration). `when` is optional.
|
|
|
|
## profiles/<id>.json
|
|
```json
|
|
{"entity":"component/scheduler","summary":"…","key_facts":["…"],"time_range":{"start":"unknown","end":"ongoing"},
|
|
"sources_hash":"ab12cd34ef56","ts":"…"}
|
|
```
|
|
`sources_hash` is the hash of the entity's source set at write time; a mismatch marks the profile stale.
|
|
|
|
## schema.json
|
|
```json
|
|
{"version":1,"entity_types":["PERSON","ORGANIZATION","LOCATION","EVENT","ARTIFACT","COMPONENT",…],
|
|
"predicate_hints":["depends on","calls",…],"history":[{"version":1,"ts":"…","note":"init with preset 'software'"}]}
|
|
```
|
|
|
|
## config.json
|
|
```json
|
|
{"preset":"software","include":["README.md","docs/**/*.md",…],"exclude":["node_modules/**",…],
|
|
"max_docs_per_run":50,"max_entities_per_doc":40,"chunk_chars":6000,"profile_min_degree":3,
|
|
"resolve_batch_size":80,"gold_min":2,"review_days":7,"provider":{"name":"","extract_model":"","reason_model":""}}
|
|
```
|
|
|
|
## state.json
|
|
Runs (last 200), `pending_resummarize`, `open_packets` (names handed out in the last resolution packet per type), `last_sample`, `last_eval`, counters.
|
|
|
|
## eval/
|
|
`gold/<doc>.json` — `{"source": "<ref>", "entities": [{"name","type"}], "relations": [{"source","target"}]}` ·
|
|
`aliases.json` — `{"<canonical form>": "<gold name>"}` · `last_report.json`.
|
|
|
|
## Packet payloads (what agents return)
|
|
|
|
Extraction: `{"entities":[{"name","type","description"}],"relations":[{"source","predicate","target"}]}`
|
|
Resolution: `{"clusters":[{"canonical","aliases":[…]}]}` (optionally `"input_names":[…]`)
|
|
Profile: `{"summary","key_facts":[…],"time_range":{"start","end"}}`
|
|
|
|
The strict JSON schemas (for structured-output APIs) are in `growmos.schema`.
|