v0.1 architecture: seams and surfaces #1
thorwhalen
started this conversation in
General
Replies: 1 comment
|
Update after two independent reviews of #12 (merged).
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
The architecture for v0.1, decided before the first commit (per the
architecture-firstpractice: boundaries now, so later iterations add at a seam that already exists). Also kept at the top of.claude/CLAUDE.md.Seams
Store(files=)dol.TextFilesunder the data root (ACQUAINT_DATA_DIR→~/.config/acquaint/config.toml→~/.local/share/acquaint)MutableMapping[str, str]: adict(tests),sshdol/s3dolstoressync_init(remote_url=)ghgcrypt::URL (git-remote-gcrypt encrypts file names and history too); a local bare repo (tests)git/ghrun:run=inacquaint.syncsubprocess.runcatalog=inacquaint.deslopacquaint/data/deslop/tells.yamlsigns-of-ai-writingrulesWould each surface need the core to change?
cw): no. Tools take flat arguments and return JSON-ready dicts; rendering lives in the adapter.py2mcpstring refs): no. Every tool has a stable name, a typed signature and a docstring. Its side-effect class is recorded next to the tool list, so operator-only operations (rename, forget, sync) can be left out of the MCP surface.data_dir, so there is no module-level state to make per-request. Not built: profiles are not exposed to hosted assistants for now.Provisional defaults
resolveis deterministic normalisation. Probabilistic matching (Fellegi–Sunter, e.g. Splink) only matters for bulk imports, so it is not a seam yet.Deliberate deviation
Data and config directories are resolved with the standard library rather than
config2py, because importingconfig2pycosts about 128 ms and a one-field lookup has to stay cheaper than guessing.All reactions