What Systems Exist?
Survey code and produce specs/systems.yml: a reverse backlog of durable system domains worth spec'ing later.
Variables
SURVEY_SCOPE:$ARGUMENTS— repo root, subtree, or plain-language area to surveyREVERSE_COMMAND:/dev:reverse
Prerequisites
- The survey scope exists and is accessible.
- If
specs/README.mdexists, read it first.
Knowledge
Valid Survey Scopes
Use . for the repo root, a subtree such as plugins/, or a plain-language area such as the build system.
Domain Classification
covered— already documented by an existing specupdate— existing spec likely needs a refreshcandidate— no spec yet, worth reverse-engineeringfold— too small; absorb into a neighboring domainskip— not worth a spec
Backlog vs Index
specs/systems.yml is the reverse backlog. specs/README.md remains the index of completed specs. Use references/systems-schema.md for the exact YAML shape, status values, and queue rules.
Workflow
- Read
specs/README.mdif it exists and classify already-documented areas ascovered. - Run a wide survey of the requested scope to map directories, entry points, shared libraries, and docs.
- Normalize discoveries into stable domains and split or fold them when the boundary is clear.
- Define a concrete
$REVERSE_COMMANDtarget for each actionable item. - Present the queue to the user before saving.
- Write
specs/systems.ymlwith only actionablecandidateandupdateitems insystems:and existing specs incovered:. - Commit the backlog.
Constraints
- Favor fewer durable domains over many narrow items.
- Do not create backlog items for tiny or obvious code.
- If a domain already exists in
specs/README.md, preferupdateover duplication. - If the survey is too uncertain, narrow the scope instead of guessing.
- Leave the git tree clean after the commit.
Validation
specs/systems.ymlfollowsreferences/systems-schema.md- Every actionable item has a consumable
target - No trivial code is queued for reverse work
- Existing specs are in
covered: - IDs are zero-padded and unique
- The user approved the queue before saving
git status --porcelainis clean