Docs & Rules

yegor256/takesGitHubLast refreshed Oct 2, 2026

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

5 names in these docs no longer match the code.

master0f3ab9clisted 22h ago

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

37
5 stale37
1 docs, listed Oct 2
yegor256/takesOpen repository

Names these docs write that the code no longer has5

Each sentence below names a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.

  • RenamedRsJSON
    * [RsJSON](#rsjson)

    Renamed: RsJSON is now RsJson, at src/main/java/org/takes/rs/RsJson.java. Renamed in 3b82af1

    View on GitHub

  • RenamedFtCLI
    There is a convenient FtCLI class that parses command-line arguments and starts the necessary Front accordingly.

    Renamed: FtCLI is now FtCli, at src/main/java/org/takes/http/FtCli.java. Renamed in 3b82af1

    View on GitHub

  • RenamedCcXOR
    new CcSafe(new CcHex(new CcXOR(new CcCompact(), "secret-code")))

    Renamed: CcXOR is now CcXor, at src/main/java/org/takes/facets/auth/codecs/CcXor.java. Renamed in 3b82af1

    View on GitHub

  • RenamedRsHTML
    return new RsHTML(

    Renamed: RsHTML is now RsHtml, at src/main/java/org/takes/rs/RsHtml.java. Renamed in 3b82af1

    View on GitHub

  • RenamedTkHTML
    new FkRegex("/", new TkHTML("Hello, check <a href='/acc'>account</a>")),

    Renamed: TkHTML is now TkHtml, at src/main/java/org/takes/tk/TkHtml.java. Renamed in 3b82af1

    View on GitHub

yegor256/takes — documented rules

37 of 37 rules, printed October 3, 2026.

The sentence in your docs
Read Oct 2
There are various useful implementations of that interface: The [BkBasic](src/main/java/org/takes/http/BkBasic.java) class is a basic implementation of the Back interface. It is responsible for accepting the request from Socket, converting the socket's input to the [Request](src/main/java/org/takes/Request.java), dispatching it to the provided [Take](src/main/java/org/takes/Take.java) instance, getting the result and printing it to the socket's output until the request is fulfilled.
BkBasic depends on Request
Holds
Read Oct 2
There are various useful implementations of that interface: The [BkBasic](src/main/java/org/takes/http/BkBasic.java) class is a basic implementation of the Back interface. It is responsible for accepting the request from Socket, converting the socket's input to the [Request](src/main/java/org/takes/Request.java), dispatching it to the provided [Take](src/main/java/org/takes/Take.java) instance, getting the result and printing it to the socket's output until the request is fulfilled.
BkBasic depends on Take
Holds
Read Oct 2
Then, it gives requests to the instance of TkFork (tk stands for "take") and expects it to return an instance of Take back.
TkFork depends on Take
Holds
Read Oct 2
We are using TkRegex instead of Take, in order to work with RqRegex instead of a more generic Request.
TkRegex depends on RqRegex
Holds
Read Oct 2
An essential part of the [Bigger Example](#a-bigger-example) is the [Front](src/main/java/org/takes/http/Front.java) interface.
Front is a contract
Holds
Read Oct 2
FtBasic, which is a basic front, implements that interface - you have seen its usage in the above-mentioned example.
FtBasic implements Front
Holds
Read Oct 2
The [Back](src/main/java/org/takes/http/Back.java) interface is the back-end that is responsible for IO operations on TCP network level.
Back is a contract
Holds
Read Oct 2
The [BkBasic](src/main/java/org/takes/http/BkBasic.java) class is a basic implementation of the Back interface.
BkBasic implements Back
Holds
Read Oct 2
The [BkTimeable](src/main/java/org/takes/http/BkTimeable.java) class is a decorator of the Back interface, that is responsible for running the back-end for a specified maximum lifetime in milliseconds.
BkTimeable implements Back
Holds
Read Oct 2
The [BkWrap](src/main/java/org/takes/http/BkWrap.java) class is a convenient wrap over the original Back instance.
BkWrap implements Back
Holds
Read Oct 2
The [BkWrap](src/main/java/org/takes/http/BkWrap.java) class is a convenient wrap over the original Back instance. It just delegates the accept to that Back and might be useful if you want to add your own decorators of the Back interface. This class is used in BkParallel and BkSafe as a parent class.
BkParallel extends BkWrap
Holds
Read Oct 2
The [BkWrap](src/main/java/org/takes/http/BkWrap.java) class is a convenient wrap over the original Back instance. It just delegates the accept to that Back and might be useful if you want to add your own decorators of the Back interface. This class is used in BkParallel and BkSafe as a parent class.
BkSafe extends BkWrap
Holds
Read Oct 2
TkFallback decorates an instance of Take and catches all exceptions any of its Takes may throw.
TkFallback implements Take
Holds
Read Oct 2
**Everything is a composable interface, never a framework base class.** The entire framework rests on three interfaces: [Take](src/main/java/org/takes/Take.java) (converts a request into a response), [Request](src/main/java/org/takes/Request.java), and [Response](src/main/java/org/takes/Response.java).
Take is a contract
Holds
Read Oct 2
**Everything is a composable interface, never a framework base class.** The entire framework rests on three interfaces: [Take](src/main/java/org/takes/Take.java) (converts a request into a response), [Request](src/main/java/org/takes/Request.java), and [Response](src/main/java/org/takes/Response.java).
Request is a contract
Holds
Read Oct 2
**Everything is a composable interface, never a framework base class.** The entire framework rests on three interfaces: [Take](src/main/java/org/takes/Take.java) (converts a request into a response), [Request](src/main/java/org/takes/Request.java), and [Response](src/main/java/org/takes/Response.java).
Response is a contract
Holds
Read Oct 2
Both Request and Response extend [Head](src/main/java/org/takes/Head.java) (HTTP header lines) and [Body](src/main/java/org/takes/Body.java) (a raw InputStream).
Request extends Head
Holds
Read Oct 2
Both Request and Response extend [Head](src/main/java/org/takes/Head.java) (HTTP header lines) and [Body](src/main/java/org/takes/Body.java) (a raw InputStream).
Request extends Body
Holds
Read Oct 2
Both Request and Response extend [Head](src/main/java/org/takes/Head.java) (HTTP header lines) and [Body](src/main/java/org/takes/Body.java) (a raw InputStream).
Response extends Head
Holds
Read Oct 2
Both Request and Response extend [Head](src/main/java/org/takes/Head.java) (HTTP header lines) and [Body](src/main/java/org/takes/Body.java) (a raw InputStream).
Response extends Body
Holds
Read Oct 2
[TkWrap](src/main/java/org/takes/tk/TkWrap.java) and [RsWrap](src/main/java/org/takes/rs/RsWrap.java) are the base decorators for takes and responses respectively. Cross-cutting concerns — logging ([TkSlf4j](src/main/java/org/takes/tk/TkSlf4j.java)), GZIP compression ([TkGzip](src/main/java/org/takes/tk/TkGzip.java)), authentication ([TkAuth](src/main/java/org/takes/facets/auth/TkAuth.java)), error fallback ([TkFallback](src/main/java/org/takes/facets/fallback/TkFallback.java)) — are each a thin wrapper around any other Take.
TkWrap implements Take
Holds
Read Oct 2
Cross-cutting concerns — logging ([TkSlf4j](src/main/java/org/takes/tk/TkSlf4j.java)), GZIP compression ([TkGzip](src/main/java/org/takes/tk/TkGzip.java)), authentication ([TkAuth](src/main/java/org/takes/facets/auth/TkAuth.java)), error fallback ([TkFallback](src/main/java/org/takes/facets/fallback/TkFallback.java)) — are each a thin wrapper around any other Take.
TkSlf4j implements Take
Holds
Read Oct 2
Cross-cutting concerns — logging ([TkSlf4j](src/main/java/org/takes/tk/TkSlf4j.java)), GZIP compression ([TkGzip](src/main/java/org/takes/tk/TkGzip.java)), authentication ([TkAuth](src/main/java/org/takes/facets/auth/TkAuth.java)), error fallback ([TkFallback](src/main/java/org/takes/facets/fallback/TkFallback.java)) — are each a thin wrapper around any other Take.
TkGzip implements Take
Holds
Read Oct 2
Cross-cutting concerns — logging ([TkSlf4j](src/main/java/org/takes/tk/TkSlf4j.java)), GZIP compression ([TkGzip](src/main/java/org/takes/tk/TkGzip.java)), authentication ([TkAuth](src/main/java/org/takes/facets/auth/TkAuth.java)), error fallback ([TkFallback](src/main/java/org/takes/facets/fallback/TkFallback.java)) — are each a thin wrapper around any other Take.
TkAuth implements Take
Holds
Read Oct 2
**The server is split into a Front and a Back, each independently composable.** [Front](src/main/java/org/takes/http/Front.java) owns the TCP socket lifecycle (accept connections, honour Exit), while [Back](src/main/java/org/takes/http/Back.java) owns the HTTP lifecycle for a single socket (parse request, call Take, write response). [BkBasic](src/main/java/org/takes/http/BkBasic.java) provides sequential request handling; [BkParallel](src/main/java/org/takes/http/BkParallel.java) wraps it with a thread pool;
BkParallel implements Back
Holds
Read Oct 2
**The server is split into a Front and a Back, each independently composable.** [Front](src/main/java/org/takes/http/Front.java) owns the TCP socket lifecycle (accept connections, honour Exit), while [Back](src/main/java/org/takes/http/Back.java) owns the HTTP lifecycle for a single socket (parse request, call Take, write response).
Front depends on Exit
Holds
Read Oct 2
[BkSafe](src/main/java/org/takes/http/BkSafe.java) suppresses exceptions; [BkTimeable](src/main/java/org/takes/http/BkTimeable.java) enforces a per-request timeout. Each layer is a decorator of the same Back interface, so you can combine them independently without touching routing or business logic.
BkSafe implements Back
Holds
Read Oct 2
**Routing is a chain of explicit Fork predicates, not a registry of annotated methods.** [TkFork](src/main/java/org/takes/facets/fork/TkFork.java) iterates over [Fork](src/main/java/org/takes/facets/fork/Fork.java) instances and returns the first that matches.
TkFork depends on Fork
Holds
Read Oct 2
**Routing is a chain of explicit Fork predicates, not a registry of annotated methods.** [TkFork](src/main/java/org/takes/facets/fork/TkFork.java) iterates over [Fork](src/main/java/org/takes/facets/fork/Fork.java) instances and returns the first that matches. Built-in forks match on URI path regex ([FkRegex](src/main/java/org/takes/facets/fork/FkRegex.java)), HTTP method ([FkMethods](src/main/java/org/takes/facets/fork/FkMethods.java)), query parameters, or Accept header.
FkRegex implements Fork
Holds
Read Oct 2
**Routing is a chain of explicit Fork predicates, not a registry of annotated methods.** [TkFork](src/main/java/org/takes/facets/fork/TkFork.java) iterates over [Fork](src/main/java/org/takes/facets/fork/Fork.java) instances and returns the first that matches. Built-in forks match on URI path regex ([FkRegex](src/main/java/org/takes/facets/fork/FkRegex.java)), HTTP method ([FkMethods](src/main/java/org/takes/facets/fork/FkMethods.java)), query parameters, or Accept header.
FkMethods implements Fork
Holds
Read Oct 2
**Authentication is a pair of enter/exit methods on a Pass interface, composable like any other object.** [Pass](src/main/java/org/takes/facets/auth/Pass.java) has two methods: enter(Request) returns the authenticated Identity (or Opt.Empty), and exit(Response, Identity) attaches session information (e.g. a cookie) to the outgoing response.
Pass has an enter method
Holds
Read Oct 2
**Authentication is a pair of enter/exit methods on a Pass interface, composable like any other object.** [Pass](src/main/java/org/takes/facets/auth/Pass.java) has two methods: enter(Request) returns the authenticated Identity (or Opt.Empty), and exit(Response, Identity) attaches session information (e.g. a cookie) to the outgoing response.
Pass has an exit method
Holds
Read Oct 2
**Authentication is a pair of enter/exit methods on a Pass interface, composable like any other object.** [Pass](src/main/java/org/takes/facets/auth/Pass.java) has two methods: enter(Request) returns the authenticated Identity (or Opt.Empty), and exit(Response, Identity) attaches session information (e.g. a cookie) to the outgoing response.
Pass depends on Identity
Holds
Read Oct 2
**Authentication is a pair of enter/exit methods on a Pass interface, composable like any other object.** [Pass](src/main/java/org/takes/facets/auth/Pass.java) has two methods: enter(Request) returns the authenticated Identity (or Opt.Empty), and exit(Response, Identity) attaches session information (e.g. a cookie) to the outgoing response.
Pass depends on Response
Holds
Read Oct 2
**Authentication is a pair of enter/exit methods on a Pass interface, composable like any other object.** [Pass](src/main/java/org/takes/facets/auth/Pass.java) has two methods: enter(Request) returns the authenticated Identity (or Opt.Empty), and exit(Response, Identity) attaches session information (e.g. a cookie) to the outgoing response.
Pass depends on Opt
Holds
Read Oct 2
Providers — OAuth via Facebook, GitHub, Google, or cookie-based — all implement Pass and can be chained with [PsChain](src/main/java/org/takes/facets/auth/PsChain.java) or combined with [PsAll](src/main/java/org/takes/facets/auth/PsAll.java).
PsChain implements Pass
Holds
Read Oct 2
Providers — OAuth via Facebook, GitHub, Google, or cookie-based — all implement Pass and can be chained with [PsChain](src/main/java/org/takes/facets/auth/PsChain.java) or combined with [PsAll](src/main/java/org/takes/facets/auth/PsAll.java).
PsAll implements Pass
Holds
37 rules from 1 doc

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.