Documentation
¶
Overview ¶
Package facts interprets the declared project.md layers, merges them with the detection probes and the contract's defaults, and attributes every effective value to its origin. It is the one component of f10 allowed to interpret instruction prose - bin/resolve.sh stays a concatenator.
Interpretation is deliberately shallow: only the sub-facts with a fixed vocabulary (Layering, Visibility, Storage, the tracker kind and its id prefix) become structure; everything else is presented as the declared prose, attributed but unparsed. The binary may be incomplete, never wrong - what it cannot place it shows as-is instead of guessing.
It writes that prose too, in scaffold.go: `f10 init` renders detection as a project.md. Reader and writer share a package so the vocabulary one keys on and the words the other emits cannot drift apart.
Index ¶
Constants ¶
const ( OriginDetected = "detected" OriginDefault = "default" OriginAbsent = "absent" )
Origins an effective value can have. Declared origins are qualified by the layer label at build time: "declared (main)", "declared (worktree)".
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Draft ¶
A Draft is one rendered project.md: the markdown, the contract sections it carries, and the ones left out because nothing detected them.
type Effective ¶
type Effective struct {
Fields []Field `json:"fields"`
Unrecognized []Field `json:"unrecognized,omitempty"`
// The fixed-vocabulary sub-facts v1 extracts.
Layering string `json:"layering"`
Visibility string `json:"visibility"`
Storage string `json:"storage"`
TrackerKind string `json:"trackerKind,omitempty"`
IDPrefix string `json:"idPrefix,omitempty"` // "ABC", "F10" - the task id format's letters
IDPrefixOrigin string `json:"idPrefixOrigin,omitempty"` // "declared (<layer>)" or "derived from project name <name>"
IDPrefixDerived bool `json:"idPrefixDerived,omitempty"` // the prefix came from the project's name, not a declaration
}
Effective is the merged, attributed view of a project's configuration.
type Field ¶
type Field struct {
Name string `json:"name"`
Value string `json:"value"`
Prose bool `json:"prose,omitempty"` // multi-line prose, not a scalar
Origin string `json:"origin"` // "detected", "declared (<layer>)", "default", "absent"
Source string `json:"source,omitempty"` // file for declared, evidence for detected
}
A Field is one effective configuration value with its provenance.