These are a collection of semi-standards for reference by people and agents accessible in a public manner for generic reference in projects.
The existence of an RFC does not mean that you need to adopt one or all of them and is just a description of a mini-standard that you may opt into.
They are numbered and titled and each has a brief executive summary description in this file and a fuller description in single files or directories (if supporting assets are necessary) under rfcs.
See the following RFCs for descriptions of standards relative to this repository itself:
- nexp ::
salotz.002_semantic-changelog - status :: DRAFT
Proposal: rfcs/salotz.002_semantic-changelog/README.md
Executive Summary:
A general-purpose format for semantic changelogs and git commit messages. Defines "Growth", "Breakage", and "Regression" change categories with specific sub-keywords, version numbering (B.R.G), and structured metadata via git trailers. Includes recommendations for both human-readable changelogs and machine-readable commit messages.
- nexp ::
salotz.003_rfc-specs - status :: DRAFT
Proposal: rfcs/salotz.003_rfc-specs.md
Executive Summary:
Specifications for the required information for an RFC (nexp, long name, executive summary) and how to name/format proposals. This is the meta-specification for the RFC process itself.
- nexp ::
salotz.004_nexps - status :: DRAFT
Proposal: rfcs/salotz.004_nexps.md
Executive Summary:
A proposal that defines how to name digital document entities using a namespaced expression format (e.g.
format:namespace.field-1_field-2). Uses dots for namespace separation and underscores/hyphens for fields.
- nexp ::
salotz.006_codetags - status :: DRAFT
Proposal: rfcs/salotz.006_codetags/README.md
Executive Summary:
Tags that are added in comments to code that add semantic meaning to otherwise freeform comments, making them searchable by machine and available to tooling. Defines a standard set of codetags (TODO, FIXME, etc.) and categories (tasks, warnings, growth, etc.).
- nexp ::
012_information-errors - status :: DRAFT
Proposal: rfcs/salotz.012_information-errors.md
Executive Summary:
Errors in information systems (e.g. event logs) should provide actionable information rather than just operational severity categories. Maps error types to next actions for handlers. Inspired by Stuart Halloway.
- nexp ::
salotz.014_project-declarations - status :: DRAFT
Proposal: rfcs/salotz.014_project-declarations.md
Executive Summary:
A best practice for publishing short, structured project declarations so consumers and contributors can judge fitness, risk, and expected quality at a glance. Topics include lifecycle phase, maintenance intent, authorship method (e.g. AI-assisted or AI-authored), contribution stance, and support. Includes suggested vocabularies and a README table convention.
- nexp ::
salotz.016_trivial-plaintext-formats - status :: DRAFT
Proposal: rfcs/salotz.016_trivial-plaintext-formats.md
Executive Summary:
A small collection of nearly trivial plaintext formats along with file extensions. Includes a line-based list format (.list) and a single-string format (.str).
- nexp ::
salotz.017_bunker - status :: DRAFT
Proposal: rfcs/salotz.017_bunker.md
Executive Summary:
Introduces the concept of a
bunkerdirectory for user-only data in $HOME (e.g..$USERor.$USER.d). Provides a safe space for customization and configuration that will not be touched by other programs.
- nexp ::
salotz.020_repo-issue-tracker - status :: DRAFT
Proposal: rfcs/salotz.020_repo-issue-tracker.md
Executive Summary:
Schema for including issue tracking sources with a project, without having to rely on outside forges.
- nexp ::
salotz.021_git-commit-messages - status :: DRAFT
Proposal: rfcs/salotz.021_git-commit-messages/README.md
Executive Summary:
Standard behaviors and markup for git commit messages, including
wip!prefix for work-in-progress commits, issue reference trailers (Completes/Progresses/References) with namespaced values, and project domains.
- nexp ::
salotz.022_ai-coding-structure - status :: DRAFT
Proposal: rfcs/salotz.022_ai-coding-structure/README.md
Executive Summary:
Provides a standard for structuring repositories to make them useful for AI-enhanced coding. Includes standard naming and schemas for folders, filenames, and content of those files. The goal is to provide useful, incremental context for LLMs that are built up for a specific coding repository. Companion to RFC 23 for host-local context and overrides.
- nexp ::
salotz.023_local-agent-context - status :: DRAFT
Proposal: rfcs/salotz.023_local-agent-context/README.md
Executive Summary:
Provides a standard for specifying local AI agent context injection. Includes standardization of Linux-style home directories, bootloading guidance for tools,
xagentsplacement under XDG/XDGX paths for agent-derived resources, and mechanisms for local overrides of git repo context (.agents.local).
- nexp ::
salotz.024_extended_xdg_base_directory - status :: DRAFT
Proposal: rfcs/salotz.024_extended_xdg_base_directory/README.md
Executive Summary:
This RFC extends the XDG Base Directory Specification with additional user-local directories and environment variables (prefixed
XDGX_) for common use cases not covered by the base spec. It defines~/.local/opt(orXDGX_OPT_HOME) for ad-hoc user-managed software installs,~/.local/tmp(XDGX_TMP_HOME) as a user-local temporary directory distinct from the system/tmp,~/.local/scratch(XDGX_SCRATCH_HOME) for ephemeral batch-process scratch space, and~/.local/varfor variable/persistent data akin to the FHS/var. Includes recommendations for snapshotting, cleanup policies, and usage to improve system organization, backup strategies, and performance.
- nexp ::
salotz.025_host-domain-organization - status :: DRAFT
Proposal: rfcs/salotz.025_host-domain-organization/README.md
Executive Summary:
Provides guidelines for organizing project work on host systems. Distinguishes local (host-only) and remote (shared/persisted, e.g. git) work. Defines scratch space, domains (e.g. personal vs work contexts), inboxes, and staging ("outbox") areas. Recommends
~/scratchand~/local/workfor local;~/tree/<domain>/(withdevel/,projects/,admin/) for remote work organized by domain; and inbox/outbox under~/Downloads,~/local/, or domain trees.
- nexp ::
salotz.026_domain-local-configuration - status :: DRAFT
Proposal: rfcs/salotz.026_domain-local-configuration/README.md
Executive Summary:
Provides a standard mechanism for host-local, domain-scoped configuration using a
.localdirectory alongside project trees (e.g.~/tree/<domain>/...). Enables sharing configuration across git worktrees or sub-projects without duplication. Complements tools like direnv for managing per-directory overrides that are intentionally not committed to remote repositories.
- nexp ::
salotz.027_env-nexps - status :: DRAFT
Proposal: rfcs/salotz.027_env-nexps/README.md
Executive Summary:
Adapts name expressions (nexps) to UNIX-style environment variable names. Defines screaming-snake-case names with single underscores separating words and double underscores (dunders) separating fields, plus conventions for leading underscores to mark user-configured vs application-internal "hidden" variables. Covers names only, not values, and is designed to coexist with shell variables in the global environment namespace.
- nexp ::
salotz.028_prjx - status :: DRAFT
Proposal: rfcs/salotz.028_prjx/README.md
Executive Summary:
Extends project-local layout conventions beyond the PRJ Base Directory Spec under the name PRJX ("Project Spec Extended"). Defines project-root discovery (
PRJX_ROOT/.prjx-root), portable vs host-local directories (.config/.local), fully qualified project and replica names, project IDs, XDG/XDGX integration under aprjx/namespace, and project-local environment variables prefixedPRJX__.
- nexp ::
salotz.029_glossary-format - status :: DRAFT
Proposal: rfcs/salotz.029_glossary-format.md
Executive Summary:
Defines a simple Markdown format for glossaries: a top-level
# Glossaryheading, one## termsubheading per entry, short definition bodies, and in-document cross-links between terms. Prefer this over tables so definitions remain linkable. Originally specified inline in RFC 22; extracted here for reuse across RFCs, projects, and shared agent guidelines.
- nexp ::
salotz.030_application-info - status :: DRAFT
Proposal: rfcs/salotz.030_application-info/README.md
Executive Summary:
Defines a static, machine- and human-readable application info document for software products: context and usage metadata that operators, agents, and tools can consume without scraping READMEs or CLI help strings. The default path is
.appinfo/meta.tomlat the application project root. The format is a small TOML core (version, optional[project],[products.*]) plus an open extension rule: new concerns add their own top-level or per-product tables and define their own shape—no[tool.*]namespace. Environment variable registries are specified in RFC 031. Complementary to jdx packslip (signed release / supply-chain install metadata) and RFC 28 PRJX project-management metadata (.config/_project-meta.toml), not a replacement for either.
- nexp ::
salotz.031_application-env - status :: DRAFT
Proposal: rfcs/salotz.031_application-env/README.md
Executive Summary:
Defines environment-variable declaration tables for RFC 030 application info documents (
.appinfo/meta.toml). Products document shared and per-product env prefixes and variable maps ([env]/[products.<id>.env]) as per-name subtables so humans, agents, and help tooling can discover what a product reads without executing it. Entries MAY carry RFC 032 value metadata:type,policy, structureddefault(valueand/orresolution), enumvalues, andaliasesas canonical → alias list. Descriptive by default; name form follows RFC 27. Does not own project-localPRJX__*leaves (RFC 28).
- nexp ::
salotz.032_env-value-types - status :: DRAFT
Proposal: rfcs/salotz.032_env-value-types/README.md
Executive Summary:
Defines a small type system and value grammar for environment variable strings. Normative type names are
boolean,enum,string,null, and compositenullable-enum. Missing means absent or empty string (not typed null). Each variable has a single value policy (silent|warn|strict|required, defaultwarn) plus a default when not required. Covers token matching, invalid-value handling, and a documentation table pattern (name, type, policy, default, canonical values, aliases). Machine- readable registry fields for those columns live in RFC 031. Name form stays in RFC 027.