Documentation
¶
Overview ¶
Package scan orchestrates artifact discovery: walks the repo, dispatches adapters, and upserts artifacts/revisions/todos/criteria into the store.
Index ¶
- func SourceTypeDisplayLabel(sourceType string) string
- type EvidenceConceptExample
- type EvidenceEdgeExample
- type EvidenceGraphDiagnostics
- type GitEvidenceDiagnostics
- type GitEvidenceEdgeExample
- type ProgressEvent
- type Result
- type RunOptions
- type ScanHint
- type Scanner
- type SourceBreakdownRow
- type SourceCompanionAdmissionDiagnostics
- type SourceCompanionAdmissionExample
- type SourceCompanionRejectionExample
- type WorkstreamArtifactExample
- type WorkstreamClusterExample
- type WorkstreamDialectProfileDiagnostics
- type WorkstreamEvidenceDiagnostics
- type WorkstreamRejectedAnchorExample
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SourceTypeDisplayLabel ¶
SourceTypeDisplayLabel returns human-facing copy for `ds scan` summaries. Internal pipeline IDs remain markdown / openspec / adr in config and the DB; this layer is display-only.
Types ¶
type EvidenceConceptExample ¶ added in v0.1.0
type EvidenceConceptExample struct {
Kind string `json:"kind"`
Canonical string `json:"canonical"`
DocumentFrequency int `json:"document_frequency"`
Reason string `json:"reason"`
}
EvidenceConceptExample explains one concept skipped from edge materialization.
type EvidenceEdgeExample ¶ added in v0.1.0
type EvidenceEdgeExample struct {
EdgeType string `json:"edge_type"`
Source string `json:"source"`
Target string `json:"target"`
SourceSignal string `json:"source_signal"`
Explanation string `json:"explanation"`
Confidence float64 `json:"confidence"`
EvidenceCount int `json:"evidence_count"`
}
EvidenceEdgeExample gives a compact receipt-like example for diagnostics.
type EvidenceGraphDiagnostics ¶ added in v0.1.0
type EvidenceGraphDiagnostics struct {
RichTypedIndex bool `json:"rich_typed_index,omitempty"`
ConceptsIndexed int `json:"concepts_indexed"`
MentionsIndexed int `json:"mentions_indexed"`
EdgesIndexed int `json:"edges_indexed"`
ConceptsByKind map[string]int `json:"concepts_by_kind,omitempty"`
MentionsByField map[string]int `json:"mentions_by_field,omitempty"`
EdgesByType map[string]int `json:"edges_by_type,omitempty"`
NoisyConceptsSkipped int `json:"noisy_concepts_skipped,omitempty"`
TopNoisyConcepts []EvidenceConceptExample `json:"top_noisy_concepts,omitempty"`
TopEdges []EvidenceEdgeExample `json:"top_edges,omitempty"`
}
EvidenceGraphDiagnostics is a scan-time summary of persisted graph evidence.
type GitEvidenceDiagnostics ¶ added in v0.1.0
type GitEvidenceDiagnostics struct {
Enabled bool `json:"enabled"`
HistoryShape string `json:"history_shape"`
IsShallow bool `json:"is_shallow,omitempty"`
Branch string `json:"branch,omitempty"`
MaxCommits int `json:"max_commits"`
MaxFilesPerCommit int `json:"max_files_per_commit"`
TotalCommits int `json:"total_commits,omitempty"`
CommitsRead int `json:"commits_read,omitempty"`
CommitsStored int `json:"commits_stored,omitempty"`
FilesStored int `json:"files_stored,omitempty"`
BodiesTruncated int `json:"commit_bodies_truncated,omitempty"`
EdgesIndexed int `json:"edges_indexed,omitempty"`
EdgesByType map[string]int `json:"edges_by_type,omitempty"`
SkippedLargeCommits int `json:"skipped_large_commits,omitempty"`
SkippedMergeCommits int `json:"skipped_merge_commits,omitempty"`
SkippedLockfileOnlyCommits int `json:"skipped_lockfile_only_commits,omitempty"`
SkippedNoMappedArtifacts int `json:"skipped_no_mapped_artifacts,omitempty"`
PathPairsEvaluated int `json:"path_pairs_evaluated,omitempty"`
PathPairsMaterialized int `json:"path_pairs_materialized,omitempty"`
CappedSourcePaths int `json:"capped_source_paths,omitempty"`
HighDensitySourcePaths int `json:"high_density_source_paths,omitempty"`
CappedCommitPathPairs int `json:"capped_commit_path_pairs,omitempty"`
CappedPathPairs int `json:"capped_path_pairs,omitempty"`
CappedArtifactEdges int `json:"capped_artifact_edges,omitempty"`
GitError string `json:"git_error,omitempty"`
TopEdges []GitEvidenceEdgeExample `json:"top_edges,omitempty"`
}
GitEvidenceDiagnostics is emitted by ds scan --json when git evidence is enabled.
type GitEvidenceEdgeExample ¶ added in v0.1.0
type GitEvidenceEdgeExample struct {
EdgeType string `json:"edge_type"`
Source string `json:"source"`
Target string `json:"target"`
SourceTitle string `json:"source_title,omitempty"`
TargetTitle string `json:"target_title,omitempty"`
SourceKind string `json:"source_kind,omitempty"`
TargetKind string `json:"target_kind,omitempty"`
SourceSubtype string `json:"source_subtype,omitempty"`
TargetSubtype string `json:"target_subtype,omitempty"`
SourcePath string `json:"source_path,omitempty"`
TargetPath string `json:"target_path,omitempty"`
SourceSignal string `json:"source_signal"`
Explanation string `json:"explanation"`
Confidence float64 `json:"confidence"`
EvidenceCount int `json:"evidence_count"`
Commits []string `json:"commits,omitempty"`
FileExamples []string `json:"file_examples,omitempty"`
HistoryShape string `json:"history_shape,omitempty"`
ConfidenceRule string `json:"confidence_rule,omitempty"`
SourcePathDensity int `json:"source_path_density,omitempty"`
TargetPathDensity int `json:"target_path_density,omitempty"`
}
GitEvidenceEdgeExample is a compact receipt for manual edge audit.
type ProgressEvent ¶ added in v0.1.0
type ProgressEvent struct {
Phase string `json:"phase"`
Event string `json:"event,omitempty"`
ElapsedMS int64 `json:"elapsed_ms,omitempty"`
FilesTotal int `json:"files_total,omitempty"`
FilesScanned int `json:"files_scanned,omitempty"`
CurrentAdapter string `json:"current_adapter,omitempty"`
CandidatesTotal int `json:"candidates_total,omitempty"`
CandidatesProcessed int `json:"candidates_processed,omitempty"`
CandidatesDiscovered map[string]int `json:"candidates_discovered,omitempty"`
CandidatesParsed map[string]int `json:"candidates_parsed,omitempty"`
ArtifactsUpserted map[string]int `json:"artifacts_upserted,omitempty"`
ParseDurationMS int64 `json:"parse_duration_ms,omitempty"`
ClassifierDurationMS int64 `json:"classifier_duration_ms,omitempty"`
WriterDurationMS int64 `json:"writer_duration_ms,omitempty"`
FlushDurationMS int64 `json:"flush_duration_ms,omitempty"`
FTSDurationMS int64 `json:"fts_duration_ms,omitempty"`
RowsWritten map[string]int `json:"rows_written,omitempty"`
ChunksFlushed map[string]int `json:"chunks_flushed,omitempty"`
DeferredFTSRows int `json:"deferred_fts_rows,omitempty"`
InventoryFiles int `json:"inventory_files,omitempty"`
ParallelWorkers int `json:"parallel_workers,omitempty"`
CappedDiscovery bool `json:"capped_discovery,omitempty"`
TransactionEnabled bool `json:"transaction_enabled,omitempty"`
SkipAuthoredAtLookup bool `json:"skip_authored_at_lookup,omitempty"`
}
ProgressEvent is a coarse scan heartbeat for long eval/index runs.
type Result ¶
type Result struct {
Found map[string]int `json:"Found"`
SourcesBreakdown []SourceBreakdownRow `json:"sources_breakdown"`
New int `json:"New"`
Updated int `json:"Updated"`
Unchanged int `json:"Unchanged"`
Hints []ScanHint `json:"hints,omitempty"`
OpenSpec *openspecmetrics.Metrics `json:"openspec,omitempty"`
EvidenceGraph *EvidenceGraphDiagnostics `json:"evidence_graph,omitempty"`
GitEvidence *GitEvidenceDiagnostics `json:"git_evidence,omitempty"`
WorkstreamEvidence *WorkstreamEvidenceDiagnostics `json:"workstream_evidence,omitempty"`
SourceCompanions *SourceCompanionAdmissionDiagnostics `json:"source_companion_admission,omitempty"`
// contains filtered or unexported fields
}
Result holds scan summary counts and per-source breakdown for CLI output.
JSON shape (see ds scan --json):
- "Found": map of adapter/source pipeline name → count of successfully indexed artifacts
- "sources_breakdown": array of { source_type, label, count, formats }
- "New", "Updated", "Unchanged": revision outcomes
- "hints": optional; only when all adapters indexed zero artifacts AND at least one hint candidate exists. Empty candidate list omits the key (encoding/json omitempty on []ScanHint).
type RunOptions ¶ added in v0.1.0
type RunOptions struct {
MaxCandidatesByAdapter map[string]int
FileWorkerCount int
UseTransaction bool
SkipAuthoredAtLookup bool
FreshIndex bool
IncludeGitEvidence bool
IncludeWorkstreamEvidence bool
RichTypedIndex bool
GitMaxCommits int
GitMaxFilesPerCommit int
Progress func(ProgressEvent)
ProgressInterval time.Duration
}
type ScanHint ¶
type ScanHint struct {
Path string `json:"path"`
SourceType string `json:"source_type,omitempty"`
SuggestCommand string `json:"suggest_command,omitempty"`
}
ScanHint is one recovery hint when a scan finds zero artifacts (`hints` in ds scan --json).
type Scanner ¶
type Scanner struct {
// contains filtered or unexported fields
}
Scanner runs adapters against a repo and persists results.
func (*Scanner) Run ¶
func (s *Scanner) Run(ctx context.Context, repoRoot string, cfg *config.RepoConfig) (*Result, error)
Run scans the repo at repoRoot, using config if available.
func (*Scanner) RunWithOptions ¶ added in v0.1.0
func (s *Scanner) RunWithOptions(ctx context.Context, repoRoot string, cfg *config.RepoConfig, opts RunOptions) (*Result, error)
RunWithOptions scans the repo with optional eval/runtime controls.
type SourceBreakdownRow ¶
type SourceBreakdownRow struct {
SourceType string `json:"source_type"`
Label string `json:"label"`
Count int `json:"count"`
Formats map[string]int `json:"formats"`
}
SourceBreakdownRow is one element of `ds scan --json` field "sources_breakdown".
type SourceCompanionAdmissionDiagnostics ¶ added in v0.1.0
type SourceCompanionAdmissionDiagnostics struct {
Enabled bool `json:"enabled"`
TestFiles int `json:"test_files,omitempty"`
ExistingSourceCandidates int `json:"existing_source_candidates,omitempty"`
CandidatesConsidered int `json:"candidates_considered,omitempty"`
Admitted int `json:"admitted,omitempty"`
AlreadyPresent int `json:"already_present,omitempty"`
SkippedByCap int `json:"skipped_by_cap,omitempty"`
RejectedByReason map[string]int `json:"rejected_by_reason,omitempty"`
TopAdmitted []SourceCompanionAdmissionExample `json:"top_admitted,omitempty"`
TopRejected []SourceCompanionRejectionExample `json:"top_rejected,omitempty"`
}
SourceCompanionAdmissionDiagnostics summarizes bounded source files admitted because indexed tests pointed at likely implementation companions.
type SourceCompanionAdmissionExample ¶ added in v0.1.0
type SourceCompanionAdmissionExample struct {
Path string `json:"path"`
Signals []string `json:"signals,omitempty"`
Confidence string `json:"confidence,omitempty"`
TestPaths []string `json:"test_paths,omitempty"`
}
SourceCompanionAdmissionExample is a compact receipt for one admitted source companion.
type SourceCompanionRejectionExample ¶ added in v0.1.0
type SourceCompanionRejectionExample struct {
Path string `json:"path"`
Reason string `json:"reason"`
Signal string `json:"signal,omitempty"`
}
SourceCompanionRejectionExample is a compact receipt for one rejected source companion.
type WorkstreamArtifactExample ¶ added in v0.1.0
type WorkstreamArtifactExample struct {
ID string `json:"id"`
Title string `json:"title,omitempty"`
Kind string `json:"kind,omitempty"`
Subtype string `json:"subtype,omitempty"`
Path string `json:"path,omitempty"`
}
WorkstreamArtifactExample identifies one artifact in a cluster receipt.
type WorkstreamClusterExample ¶ added in v0.1.0
type WorkstreamClusterExample struct {
Anchor string `json:"anchor"`
AnchorType string `json:"anchor_type"`
Dialect string `json:"dialect,omitempty"`
PackStrength string `json:"pack_strength,omitempty"`
Confidence float64 `json:"confidence"`
ConfidenceRule string `json:"confidence_rule"`
ArtifactCount int `json:"artifact_count"`
EvidenceCount int `json:"evidence_count"`
RoleMix map[string]int `json:"role_mix,omitempty"`
RoleFamilyMix map[string]int `json:"role_family_mix,omitempty"`
EvidenceSources []string `json:"evidence_sources,omitempty"`
ExampleArtifacts []WorkstreamArtifactExample `json:"example_artifacts,omitempty"`
ExampleCommits []string `json:"example_commits,omitempty"`
Capped bool `json:"capped,omitempty"`
Caveats []string `json:"caveats,omitempty"`
}
WorkstreamClusterExample gives a compact receipt for a materialized anchor cluster.
type WorkstreamDialectProfileDiagnostics ¶ added in v0.1.0
type WorkstreamDialectProfileDiagnostics struct {
DialectCounts map[string]int `json:"dialect_counts,omitempty"`
CrossRoleCounts map[string]int `json:"cross_role_counts,omitempty"`
TrustedDialects map[string]string `json:"trusted_dialects,omitempty"`
RiskFlags map[string]int `json:"risk_flags,omitempty"`
EvidenceSources map[string]map[string]int `json:"evidence_sources,omitempty"`
RoleFamilies map[string]map[string]int `json:"role_families,omitempty"`
}
WorkstreamDialectProfileDiagnostics summarizes repo-local work-reference conventions.
type WorkstreamEvidenceDiagnostics ¶ added in v0.1.0
type WorkstreamEvidenceDiagnostics struct {
Enabled bool `json:"enabled"`
AnchorsSeen int `json:"anchors_seen,omitempty"`
AnchorsMaterialized int `json:"anchors_materialized,omitempty"`
MentionsIndexed int `json:"mentions_indexed,omitempty"`
EdgesIndexed int `json:"edges_indexed,omitempty"`
EdgesByType map[string]int `json:"edges_by_type,omitempty"`
EdgesByPackStrength map[string]int `json:"edges_by_pack_strength,omitempty"`
DialectCounts map[string]int `json:"dialect_counts,omitempty"`
CappedDialectCounts map[string]int `json:"capped_dialect_counts,omitempty"`
ClustersCapped int `json:"clusters_capped,omitempty"`
PackStrengthCounts map[string]int `json:"pack_strength_counts,omitempty"`
CappedPackStrengths map[string]int `json:"capped_pack_strength_counts,omitempty"`
CappedRoleFamilies map[string]int `json:"capped_role_family_counts,omitempty"`
StrongOrCrossClusters int `json:"strong_or_cross_clusters,omitempty"`
StrongOrCrossEdges int `json:"strong_or_cross_edges,omitempty"`
PRFossilsSeen int `json:"pr_fossils_seen,omitempty"`
PRFossilsMaterialized int `json:"pr_fossils_materialized,omitempty"`
PRFossilsByDialect map[string]int `json:"pr_fossils_by_dialect,omitempty"`
DialectProfile *WorkstreamDialectProfileDiagnostics `json:"dialect_profile,omitempty"`
NoisyAnchorsRejected int `json:"noisy_anchors_rejected,omitempty"`
RejectedByReason map[string]int `json:"rejected_by_reason,omitempty"`
TopRejectedAnchors []WorkstreamRejectedAnchorExample `json:"top_rejected_anchors,omitempty"`
TopClusters []WorkstreamClusterExample `json:"top_clusters,omitempty"`
TopCappedClusters []WorkstreamClusterExample `json:"top_capped_clusters,omitempty"`
}
WorkstreamEvidenceDiagnostics is emitted by ds scan --json when workstream evidence is enabled.
type WorkstreamRejectedAnchorExample ¶ added in v0.1.0
type WorkstreamRejectedAnchorExample struct {
Anchor string `json:"anchor"`
Type string `json:"type,omitempty"`
Dialect string `json:"dialect,omitempty"`
Reason string `json:"reason"`
Source string `json:"source,omitempty"`
}
WorkstreamRejectedAnchorExample explains a suppressed anchor.