yams/GOVERNANCE.md
Trevon 7076e4b283
feat(daemon): shutdown hardening + test helper linkage fixes (#44)
* perf(daemon): coalesce metadata writes

* refactor(metadata): split repository ops

* fix(metadata): harden repository invariants

* feat: test coverage and continued refactor work in metadata code

* fix(graph): handle path-like explore queries

- prefer file path symbol lookup for graph explore\n- sanitize alias FTS queries before MATCH

* fix(daemon): quiesce shutdown background work

- Interrupt pending DB acquires before worker shutdown
- Wait for tracked background coroutines and timers to drain

* fix(daemon): cancel repair work on shutdown

Blocked embed and post-ingest queues could keep salvage and\nstuck-doc repair alive during shutdown. Consume cancellation in\nrepair retry loops and lock the integrated ServiceManager path\nwith regressions so shutdown fails fast instead of drifting.

* perf(metadata): reduce sqlite lock contention

* perf(metadata): flatten batch content retries

* fix(daemon): align shutdown wait budgets

A low shutdown timeout override could expire before ServiceManager\nfinished its 5s+30s WorkCoordinator join path. Share the join\nbudget constants, clamp graceful lifecycle waits to that floor,\nand lock the behavior with a daemon regression.

* perf(metadata): bound feedback write waits

* perf(metadata): prep batch content before tx

* fix(daemon): honor no-embeddings tasks

Post-ingest queue tasks dropped the per-task noEmbeddings flag,\nso focused extraction tests still emitted embed jobs and Windows\nCI exercised extra async paths. Preserve the flag through the bus,\nskip embed dispatch when requested, and wake the extraction poller\nimmediately after successful queueing.

* perf(daemon): batch fallback metadata writes

* feat(perf,docs): optimizations for metadata writes, prompt updates and test improvements

* perf(metadata): flatten insert retries

* fix(metadata): clear CI portability blockers

Use the shared portable ScopedEnvVar in metadata search-query helper tests, add mutators for test reuse, and normalize Statement::bindAll integral dispatch so long long arguments bind consistently across platforms. Add focused regression coverage for the bindAll long long path.

* perf(metadata): batch writes and steady bench

* fix(daemon): skip inactive post-ingest pollers

* perf(metadata): tighten tag and path caches

* perf(metadata): cache small batch upserts

* fix(daemon): harden embedded host teardown

* feat(docs): updating docs policies and language

* perf(metadata): tune doc update retries

* perf(metadata): bound download retries

* perf(metadata): bound download metadata waits

* bench(metadata): scope post-ingest content path

* fix(daemon): export embedded test hooks

* fix(daemon): harden test helper linkage

* fix(build): add missing standard includes
2026-06-08 16:29:44 -04:00

43 lines
2.5 KiB
Markdown

# Project Governance
This document describes how the YAMS project makes decisions and how contributions are handled.
We want the project to be approachable: good-faith questions, issues, pull requests, and design discussion are welcome.
## Scope and Principles
- We aim to keep decision-making lightweight, transparent, and oriented around stability and user value.
- Decisions favor lazy consensus when risk is low and repeatability is high.
- Small and medium contributions should not need heavy process overhead.
## Roles
- Maintainer: Guides overall direction, helps with release approvals, and resolves conflicts when needed.
- Committer: Helps review and merge changes in scoped areas and upholds standards and CI gates.
- Reviewer: Reviews and recommends changes.
- Contributor: Contributes via pull requests — always welcome.
- Security Team: Handles private disclosures and coordinates fixes (see SECURITY.md).
- Release Manager: Leads a release cycle (may rotate).
Currently, `@trvon` serves as Maintainer.
## Decision Process
- Lazy consensus: If no substantive objections are raised within 72 hours of a proposal/PR, it is considered approved, provided CI and expected reviews pass.
- RFCs: Encouraged for material or architectural changes, public interfaces, storage formats, and CI gates. Small fixes, docs changes, and routine improvements generally do not need an RFC.
- Voting: When needed, Maintainer(s) vote. With a single Maintainer, decisions rest with `@trvon`.
- Conflict resolution: The Maintainer helps resolve disputes. If a Technical Steering Committee (TSC) is created in the future, deadlocks escalate to the TSC.
## Ownership and Reviews
- Code ownership is defined by `CODEOWNERS`. Changes benefit from review by owners of affected areas.
- All PRs should pass CI, follow style rules, and include tests/documentation as applicable.
- We ask contributors to include DCO sign-off on commits.
- Review feedback should focus on correctness, maintainability, user impact, and kindness.
## Release Process
- Versioning follows SemVer. User-visible or interface changes should come with CHANGELOG updates and, when applicable, stability notes.
- Release cadence: monthly minor releases, ad-hoc patch releases as needed.
- A Release Manager (default: `@trvon`) coordinates tagging, artifacts, and notes.
## Security
- Private disclosure only. See SECURITY.md for reporting and handling SLAs.
## Amendments
- Amendments to this governance are proposed via PR and approved by the Maintainer.