AI chat export archiver — ingests Claude, ChatGPT, Codex, Gemini exports into a SQLite archive with full-text search, session analytics, and derived products.
- New semantics go into the substrate or product layer first, then surfaces adapt.
- Archive writes are idempotent by content hash. User metadata (tags, summaries) is excluded from the hash — changing it does not trigger re-import.
Rules for AI agents working on this repository. These override default agent behavior.
Open an issue before starting work that is non-trivial, spans multiple
PRs, or introduces architectural decisions. The issue defines scope and
acceptance criteria. Reference it from the PR with Ref #NNN or
Closes #NNN.
Run devtools verify (full, with pytest) before creating any PR. The
git hooks enforce format and lint on commit and devtools verify --quick
on push, but the full baseline must pass before the PR is opened.
Do not treat CI as the first verification pass. Anticipate failures locally.
Every PR gets a Polylogue Proof Pack comment. Treat it as a verification
impact report, not as decorative CI output and not as a complete proof.
Use it this way:
- Read the
Required Gatesbefore choosing verification. Run the gates that match the touched files, or state in the PR why a suggested gate is only an optional confidence gate for that change. - Use nonzero affected domains and claims to decide which focused tests or proof-law suites to run. Ignore zero-claim domain noise unless the changed files genuinely belong to that domain.
- Treat
Known Gapsas actionable only when they are in a changed or directly affected domain. Broad repo-wide gap dumps should not block unrelated PRs, but recurring noise should be folded back into #594. - Read
stable affected obligationsas unchanged obligations touched by the current diff, not as real freshness/SLA evidence. - If the Proof Pack is noisy, misleading, or misses a relevant gate, comment on the PR or #594 with the concrete mismatch. Do not silently ignore it.
The PR template requires sections: Summary, Problem, Solution,
Verification. Fill all of them. The PR title becomes the squash-merge
commit subject on master — write it as the permanent history line.
Rules for the squash-merge subject:
- Under 72 characters.
- Conventional prefix (
feat:,fix:,refactor:,test:,chore:,perf:,docs:). - Describes what changed, not what was worked on.
- Accurate — do not claim alignment, unification, or convergence unless the code actually achieves it.
Rules for the squash-merge body (PR description):
- Problem: why the work was necessary.
- Solution: what was done, key modules and contracts touched.
- Verification: exact commands run, not "tests pass."
Before writing a commit message or PR body that claims something is aligned, unified, converged, or complete — verify the claim against the code. Grep for duplicated logic, check both paths, read the diff. A claim that doesn't match the code is worse than no claim.
Issues and PR bodies are durable artifacts. Write them for a reader who has no conversation context — they should stand alone. Include file paths, acceptance criteria, and design references where applicable.
@CONTRIBUTING.md @TESTING.md @docs/architecture.md @docs/internals.md @docs/devtools.md