chore: terminology part 2 - one sweep over the naming thorns
Follow-up to the original terminology pass (TERMINOLOGY.md). Inventory
taken from the actual spec/engine/event symbols. One bucket issue;
commits reference this. Naming decisions marked [NAME] get decided
in-session as the work reaches them, not up front.
1. inputs/promises -> requires/provides (ruled)
The resource graph currently spells one concept five ways:
| Current |
Where |
promises / inputs stub params |
user configs, std stubs |
spec.Promiser (Promises(), Inputs()) |
step-level interface |
spec.StaticPromiseProvider / StaticInputProvider |
deploy-level (cross-deploy graph) |
spec.ResourceDeclarer (ResourceDeclarations()) |
config structs |
spec.Resource / ResourceKind / RefResource |
graph nodes (keep as-is) |
2. SourceSpan -> Span (ruled)
"Source" means three things today: (a) content origin (SourceRef,
src params), (b) the machine running scampi (package source), (c)
code locations. Ruling: Source == content-origin, exclusively.
3. Rename meaning (b): "the machine running scampi" (open)
Package source (configs, env, local cache; "never touches target")
needs a name that is not Source. [NAME] - candidates to discuss:
controller (Ansible: control node), host, origin, operator,
workstation (Chef), base. The interface it exports
(source.Source, MemSource, LocalPosixSource) renames with it.
Note the coupling: this package BACKS meaning (a) reads - naming must
keep "content origins are resolved controller-side" legible.
4. std.ln -> std.ref (ruled)
The posix-ln pun is cryptic. Barely used (no production step
implements the output side per #445), so the rename is nearly free.
5. Flatten the op-description chain (grown complexity)
Rendering one plan line takes three hops:
Op -> OpDescriber.OpDescription() -> OpDescription.PlanTemplate() -> PlanTemplate{ID, Text, Data}. The middle interface (OpDescription)
is a one-method pass-through; every op carries a <x>Desc struct just
to satisfy it. 30 files implement the chain.
6. event.Change / event.Result / spec.Result.Changed (open)
Three "change/result" names in one pipeline: event.Change (live
drift/mutation event with ChangePhase), event.Result (step
verdict), spec.Result{Changed} (op outcome). Investigate fold or
rename - e.g. event.Change -> event.Drift/event.Mutation
[NAME]; check StepOutcome (StepUnchanged/StepChanged/
StepFailed) reads cleanly against whatever wins.
Order
1 -> 2 -> 4 (mechanical, ruled) then 5 -> 6 -> 3 (need discussion as
they are reached). Each item lands as its own gated commit referencing
this issue; the issue closes when the table above has no unchecked
rows.
chore: terminology part 2 - one sweep over the naming thorns
Follow-up to the original terminology pass (TERMINOLOGY.md). Inventory
taken from the actual
spec/engine/eventsymbols. One bucket issue;commits reference this. Naming decisions marked [NAME] get decided
in-session as the work reaches them, not up front.
1.
inputs/promises->requires/provides(ruled)The resource graph currently spells one concept five ways:
promises/inputsstub paramsspec.Promiser(Promises(),Inputs())spec.StaticPromiseProvider/StaticInputProviderspec.ResourceDeclarer(ResourceDeclarations())spec.Resource/ResourceKind/RefResourceprovides = [...]/requires = [...]in stubs,configs, fixtures, site docs, TERMINOLOGY.md.
Provides()/Requires();consolidate the three overlapping interfaces rather than
renaming all in place. [NAME] the surviving interface(s).
Test_Rule_*/goldens/e2e fixtures updated in the same commit.2.
SourceSpan->Span(ruled)"Source" means three things today: (a) content origin (
SourceRef,srcparams), (b) the machine running scampi (packagesource), (c)code locations. Ruling: Source == content-origin, exclusively.
spec.SourceSpan->spec.Span;event.Template.Source->.Span; reviewFieldSpan(likely stays).3. Rename meaning (b): "the machine running scampi" (open)
Package
source(configs, env, local cache; "never touches target")needs a name that is not Source. [NAME] - candidates to discuss:
controller(Ansible: control node),host,origin,operator,workstation(Chef),base. The interface it exports(
source.Source,MemSource,LocalPosixSource) renames with it.Note the coupling: this package BACKS meaning (a) reads - naming must
keep "content origins are resolved controller-side" legible.
4.
std.ln->std.ref(ruled)The posix-
lnpun is cryptic. Barely used (no production stepimplements the output side per #445), so the rename is nearly free.
std.scampidecl + doc comment,spec.Refstays, goldens.5. Flatten the op-description chain (grown complexity)
Rendering one plan line takes three hops:
Op -> OpDescriber.OpDescription() -> OpDescription.PlanTemplate() -> PlanTemplate{ID, Text, Data}. The middle interface (OpDescription)is a one-method pass-through; every op carries a
<x>Descstruct justto satisfy it. 30 files implement the chain.
PlanTemplate() PlanTemplatedirectly (check the
diagnostic.goconsumer)? Do the*Descstructs earn their keep, or fold into the ops?
OpInspector/InspectFieldnamingvs
Diffable- consistent optional-interface vocabulary.6.
event.Change/event.Result/spec.Result.Changed(open)Three "change/result" names in one pipeline:
event.Change(livedrift/mutation event with
ChangePhase),event.Result(stepverdict),
spec.Result{Changed}(op outcome). Investigate fold orrename - e.g.
event.Change->event.Drift/event.Mutation[NAME]; check
StepOutcome(StepUnchanged/StepChanged/StepFailed) reads cleanly against whatever wins.Order
1 -> 2 -> 4 (mechanical, ruled) then 5 -> 6 -> 3 (need discussion as
they are reached). Each item lands as its own gated commit referencing
this issue; the issue closes when the table above has no unchecked
rows.