Skip to content

feat: establish canonical task dependency reads - #153

Merged
andy-esch merged 2 commits into
mainfrom
feat/canonical-task-dependency-reads
Aug 27, 2026
Merged

feat: establish canonical task dependency reads#153
andy-esch merged 2 commits into
mainfrom
feat/canonical-task-dependency-reads

Conversation

@andy-esch

@andy-esch andy-esch commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add canonical task depends_on persistence and schema/JSON projection for repository-global prerequisites.
  • Build an immutable strict task-graph snapshot with explicit healthy, degraded, and broken health; SCC-based cycle attribution; derived lifecycle/gate state; sound completion; topology; downstream impact; and deterministic blocker paths.
  • Separate full causal blockers from the action-oriented blocking frontier, and keep authorization tied to derived Eligible state rather than blocker-list emptiness.
  • Diagnose legacy blocked_by, dependencies, and blocks references without migrating them. Exactly resolved, structurally safe references are lint advisories with exit zero; missing, ambiguous, self-referential, or cyclic projections remain errors.
  • Prevent first-party bypasses: generic create/set/edit and lint --fix cannot add, remove, or reinterpret graph-owned dependency fields.
  • Preserve source identity for unreadable and duplicate-ID records, including path-faithful lint attribution and distinct missing/unreadable/invalid-reference blocker reasons.

Rollout boundary

This is the dependency read and validation foundation. It intentionally does not add public dependency or Thread mutation commands yet.

depends_on is preservation-only until the guarded task depend add/remove slice lands. task set --force does not bypass graph ownership, malformed dependency frontmatter fails closed, and lint --fix reports rather than normalizes a would-be graph repair.

The next implementation slice is the portable store-owned repository mutation boundary, followed by guarded dependency commands and queries.

Design and adversarial review

  • Amend ADR-0006 with the implementation-readiness and dependency-foundation contracts.
  • Record and close the independent Gemini audit and Claude audit.
  • Replace the original back-edge cycle discovery with SCC membership after both audits produced intersecting-cycle counterexamples.
  • Remove the speculative one-implementation graph adapter seam. The bounded library bake-off did not justify a project dependency; direct taskflow-owned adversarial tests remain in-repository.
  • Track the remaining non-blocking follow-ups on the concrete downstream tasks: machine-readable field ownership and graph-depth thresholds on 6g3q4rt7mgjn, and canonical snapshot-loader consolidation on 6g3q4rt0wzkq.

Documentation

  • Explain the preservation-only dependency rollout in the README and task authoring schema.
  • Document TaskGraph and graph/store ownership in the architecture guide.
  • Expand generated lint, task set, and task edit references with dependency guardrails and advisory/error behavior.

Validation

  • go test ./...
  • go test -race ./...
  • golangci-lint run ./... — zero issues
  • go vet ./...
  • go mod tidy -diff
  • Generated CLI docs, schema comments, and golden machine contracts are current
  • git diff --check
  • Both audit lints pass with no open findings
  • Live planning lint emits exactly six safe legacy advisories, zero unreadable files, and exits zero

Model repository-global depends_on data, strict graph health, SCC cycle attribution, derived gate state, and distinct causal/action blocker projections.

Close generic write bypasses, make safe legacy debt advisory, preserve path-faithful diagnostics, and record the two adversarial audit dispositions and downstream contracts.
Document the preservation-only depends_on rollout, graph-aware lint behavior, generic mutation guardrails, and the core/store ownership model. Regenerate the affected CLI reference and schema golden.
@andy-esch
andy-esch merged commit 509a7c3 into main Aug 27, 2026
1 check passed
@andy-esch
andy-esch deleted the feat/canonical-task-dependency-reads branch August 27, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant