Skip to content

The word is scope, not target: TargetName, TargetSpec, TargetOrder, TargetHome and TargetSystem become Scope*, and writ.targets becomes writ.scopes; a target stays a path #925

Open

Description

@David-Noble-at-work

Epic: #451 · Feature: #762 The writ lifecycle surface · Schedule: #916, lane 6, PR C

The ruling (#762, 2026-08-31; this lane ruled 2026-09-23)

The word is scope, not target. Language matters. A scope is a named execution context: a name, a target
root, a confinement boundary, an elevation posture, and its own graph (2.4-hermeticity-guarantees.md is the
authority). A target is a destination path -- where one file lands. The code uses Target for both, four lines
apart in one file: builder.go:49 "Target is the absolute path to the target file"; builder.go:57
"TargetName is the target scope". A reader cannot tell from the word which is meant, and the lifecycle work that
follows (--scope, per-scope elevation, the lifetime as a whole writ deploy invocation across scopes) needs the
word to mean one thing.

The rename

From To Why
TargetName ScopeName it names a scope
TargetSpec ScopeSpec it describes a scope: name, root, elevation
TargetOrder() ScopeOrder() the order scopes run in
TargetHome() / TargetSystem() ScopeHome() / ScopeSystem() the two builtin scopes
writ.targets writ.scopes config key, user-visible; the schema and the defaults, both
TargetRoot unchanged it is a path: the scope's root directory
Target, Entry.Target unchanged it is a path: where the file lands

Mechanical; no behavior changes. Doc comments, test names and error strings that say "target" for a scope change
with the identifiers. builder.go:49 and :57 then read as two different words for two different things.

Acceptance

  • no identifier in cmd or pkg says Target where it means a scope; TargetRoot, Target and
    Entry.Target remain, and each's doc comment says it is a path
  • writ.scopes in schema/devlore-config.json and schema/defaults/writ.yaml; writ.targets refused
  • every error string and narration line that names a scope says "scope"
  • make check green; both VMs: deploy common noblefactor-ops, upgrade, unchanged results

Plan and design documents

Kind Document
Plan docs/plans/feature/762-lifecycle-scopes.md Phase 3, the vocabulary sweep; a lane plan arrives with the branch
Design docs/architecture/2.4-hermeticity-guarantees.md, 10-command-line-interface.md §4.1

Metadata

Metadata

Labels

Epic:WritDeploymentwrit deployment: layers, adoption, and drifttaskImplementation work item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions