Fix rake steep: the admin ignore never applied
`ignore` keeps separate lists for plain and inline sources, and admin
was enrolled by `check ..., inline: true` — a bare `ignore` fed the
other list, so the files stayed checked while 12 others silently went
unchecked, hiding three stand-in gaps this fills.
Assisted-by: GLM-5.3 via pi
diff --git a/Steepfile b/Steepfile
index c814e37..b24db0d 100644
--- a/Steepfile
+++ b/Steepfile
@@ -13,7 +13,12 @@ target :lib do
# written stand-ins under sig/gems. Ignored rather than stubbed for
# now; add sig/gems/phlex.rbs and drop this once the admin surface is
# worth typing.
- ignore "lib/pro_tacts/admin"
+ #
+ # inline: true is load-bearing: `ignore` keeps separate lists for
+ # plain and inline sources, and these files were enrolled by
+ # `check ... inline: true`. A bare `ignore` feeds the other list and
+ # the files stay checked.
+ ignore "lib/pro_tacts/admin", inline: true
signature "sig"
library "digest", "fileutils", "logger", "pathname", "strscan"
diff --git a/sig/gems/roda.rbs b/sig/gems/roda.rbs
index cf6737b..dd70de8 100644
--- a/sig/gems/roda.rbs
+++ b/sig/gems/roda.rbs
@@ -30,11 +30,21 @@ class Roda
def options: (*untyped matchers) ?{ (*untyped) -> untyped } -> void
def put: (*untyped matchers) ?{ (*untyped) -> untyped } -> void
+ # The :public plugin's file server: answers a GET that names a file
+ # under PUBLIC_ROOT from there, and falls through to the routes
+ # below when it does not.
+ def public: () -> void
+
# The media type of the request body, without parameters — inherited
# from Rack::Request in the gem, restated here because the local
# RodaRequest does not.
def media_type: () -> String?
+ # The request's query and form parameters, inherited from
+ # Rack::Request in the gem and restated here for the same reason as
+ # #media_type. Values stay untyped: repeated keys arrive as arrays.
+ def params: () -> Hash[String, untyped]
+
# Halts the request, so nothing after it in a route block runs.
def redirect: (String path, ?Integer status) -> bot
end
diff --git a/sig/gems/sequel.rbs b/sig/gems/sequel.rbs
index f733a44..20a8b56 100644
--- a/sig/gems/sequel.rbs
+++ b/sig/gems/sequel.rbs
@@ -28,6 +28,10 @@ module Sequel
# DSL has no spelling for.
def self.lit: (String sql) -> untyped
+ # A column in descending order, for Dataset#order — the ordering the
+ # "recently updated" reads sort by.
+ def self.desc: (Symbol name) -> untyped
+
class Database
def []: (Symbol table) -> Dataset
diff --git a/sig/pro_tacts/admin.rbs b/sig/pro_tacts/admin.rbs
new file mode 100644
index 0000000..56af7cb
--- /dev/null
+++ b/sig/pro_tacts/admin.rbs
@@ -0,0 +1,17 @@
+# lib/pro_tacts/admin is ignored by the Steepfile — built on Phlex,
+# which ships no signatures — but web.rb still calls its two views, and
+# a checked file cannot reference a constant nothing declares. This
+# holds exactly that entry surface; the views' own files carry none.
+# When Phlex gets a stand-in under sig/gems and admin is checked for
+# real, delete this.
+module ProTacts
+ module Admin
+ class ContactsShow
+ def self.call: (contact: Contact) -> String
+ end
+
+ class ContactsIndex
+ def self.call: (recent: Array[Store::RecentContact], query: String?) -> String
+ end
+ end
+end