You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
t27f: list every spec on an import cycle (deps_cycles in spec_deps.t27) #10693
The T27F dependencies view (specs/t27f/spec_deps.t27, #10680) flags only whether the focus spec is on a cycle. Its own honest-limits block says: "A cycle among other specs is not reported." #10682 was found only because a corpus run asked the question for every spec, one at a time, in a scratch loop. After #10689 the corpus has no import cycle. But the view has no law that answers "which specs are on a cycle?" for the whole edge list, so a new cycle has nothing to check it against.
Competitors make this check a rule, not a view. dependency-cruiser has a no-circular rule and madge has --circular: both list every module on a cycle and fail the build. Bazel and Nx refuse a cyclic target graph outright.
Boundary
In scope: specs/t27f/spec_deps.t27 (a new function, its tests and the header's honest limits), its seal, and the SKILL.md row.
Given the use-edges list of any tree, a reader gets every spec that is on an import cycle, each once, and an empty list for an acyclic tree.
Requirements
deps_cycles reuses deps_walk and deps_on_cycle. It copies no body (duplicate-bodies).
Each importer is walked once. Specs that import nothing are never on a cycle and are not walked.
If the output, a walk's set or the walked list does not fit, or a walk goes deeper than DEPS_MAX_DEPTH, the answer is refused whole (cap + 1), never cut off.
Tests must cover:
the old igla pair, where both specs are listed;
a DAG, which gives an empty list;
a cycle the first spec is not on;
a self-import;
two separate cycles plus a repeated line;
the refusals.
Success Criteria
t27c test-report specs/t27f/spec_deps.t27 passes with 0 vacuous tests on the Railway lab.
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
Activity
github-actions commentedon Oct 18, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
exit 0, or a backticked commandt27f: deps_cycles lists every spec on an import cycle (Closes #10693) (…