# internal/core/reviewscope

Package reviewscope derives the task-owned workspace surface used by review, status, handoff, and completion freshness checks.

## Derive

```go
func Derive(model spec.Model, explicit []string, snapshot []string) []string
```

Derive returns the path scope implied by a task contract. Explicit scope wins.

## FilterAllowed

```go
func FilterAllowed(scope []string) []string
```

FilterAllowed removes private/local paths from a review scope.

## Literal

```go
func Literal(paths []string) []string
```

Literal cleans authoritative git path lists such as scope hints or base diffs. It does not require prose-style path evidence, so top-level extensionless files such as Makefile, Dockerfile, and LICENSE remain valid material scope.

## MaterialScope

```go
func MaterialScope(scope []string, reviewedSnapshot []string) []string
```

MaterialScope returns the content scope that should be sealed for a review.

## Merge

```go
func Merge(a, b []string) []string
```

Merge returns the sorted, de-duplicated union of scope path lists.

## PathAllowed

```go
func PathAllowed(path string) bool
```

PathAllowed reports whether a path is safe to include in review scope.

## Project

```go
func Project(model spec.Model, explicit []string, baselineSnapshot []string, currentSnapshot []string) Projection
```

Project classifies current workspace changes against the task contract and captured baseline.

## Projection

```go
type Projection struct {
	Scope        []string
	Baseline     []string
	Current      []string
	TaskChanges  []coreworkspace.Mutation
	AmbientDrift []coreworkspace.Mutation
}
```

Projection is the task-owned workspace surface relative to the captured baseline. Baseline and current snapshots are already filtered to the review comparison surface, excluding scafld runtime state.

- `Scope: []string`: 
- `Baseline: []string`: 
- `Current: []string`: 
- `TaskChanges: []coreworkspace.Mutation`: 
- `AmbientDrift: []coreworkspace.Mutation`:
