knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE )
texanshootR is a terminal-first specification-search engine. The main
entry point is shoot(). It opens a wall-clock budget, fires at the
specification space, and returns a tx_run carrying the highlighted
result and the audit trail.
library(texanshootR) run <- shoot(mtcars) print(run) summary(run)
shoot() flails opportunistically across predictor subsets,
transformations, interactions, outlier exclusions, subgroup splits, and
— as the career advances — alternative model families. The print method
leads with the shooter's face and the emotional arc the run followed
(composed -> resolved, panicked -> resolved (last-minute),
escalated to derived metrics) before the formula and the p-value.
Every run is deterministic given a seed. The seed, R version, package version, and a hash of the search trace are recorded on the returned object so the full search can be replayed.
A finished tx_run that clears p <= 0.05 is shippable. The first
shippable run opens a publication chain — six output stages,
redeemed in order:
abstract(run) # one-paragraph deadpan summary manuscript(run) # IMRaD draft; Methods match the winning spec presentation(run) # 8-slide deck; residual plot on slide 7 reviewer_response(run) # opens "we thank the reviewer..." graphical_abstract(run) # the figure your PI will retweet funding(run) # the next grant, citing the just-shipped finding
Finish the chain through your currently-unlocked prefix and you collect a length-bonus on top of the per-stage XP.
The chain breaks — bonus forfeit, partial XP kept — if you fire a
fresh shoot() before finishing. Calling the wrong stage (or the
wrong run) signals a tx_chain_error but leaves the chain open so
you can retry the correct stage.
Aliases are accepted: powerpoint (= presentation), reviewer (=
reviewer_response), graphical (= graphical_abstract).
The chain prefix you can redeem grows with cumulative XP. Career tier is a label derived from that prefix:
| Chain length | New stage | XP needed | Career tier |
|:------------:|------------------------|:---------:|--------------------|
| 1 | abstract() | 0 | Junior Researcher |
| 2 | manuscript() | 5 | Postdoc |
| 3 | presentation() | 15 | Postdoc |
| 4 | reviewer_response() | 30 | Senior Scientist |
| 5 | graphical_abstract() | 55 | Senior Scientist |
| 6 | funding() | 90 | PI |
The tier label is cosmetic. The chain length is the real gate.
Output flags on shoot() auto-generate the chain prefix needed to
reach the highest enabled flag, in order. So a shippable run with
presentation = TRUE produces abstract, manuscript, and
presentation in one go — provided each one is unlocked:
run <- shoot(mtcars, presentation = TRUE)
Files land in tempdir() by default. Override with output_dir = or
options(texanshootR.output_dir = ...). Each generator returns the
file path invisibly.
Locked calls, the wrong run, and out-of-order calls all signal a
structured tx_chain_error. A locked stage in a fresh profile
looks like this:
manuscript() requires: 5 XP (chain length 2) Current XP: 0
Scripts can branch on the reason field:
res <- tryCatch(manuscript(run), tx_chain_error = function(e) e) if (inherits(res, "tx_chain_error")) { res$reason # one of: not_unlocked, no_active_chain, # wrong_run, wrong_stage }
Inspect the live HUD with progress():
progress()
It prints chain length, current XP, next unlock, what's still locked, and the active chain window if one is open.
career() # tier, runs, favourite method, opaque scores achievements() # 20 unlockable badges; hidden ones show as ??? wardrobe() # equipped cosmetic slots (hat, badge, cloak, poncho, lanyard) run_log() # tibble of every run on this profile
Hidden achievements appear as ??? until unlocked. New cosmetics
auto-equip when their unlocking achievement fires; override the
selection with wardrobe(slot, id).
The researcher profile persists under
tools::R_user_dir("texanshootR", "data") as flat YAML. The first
interactive save prompts before writing anything to disk. Decline the
prompt, or opt out entirely with:
options(texanshootR.save_enabled = FALSE)
and the package becomes stateless: every call is independent,
progression sits inert at Junior Researcher, and the chain never
opens beyond abstract().
To pre-consent (CI, scripts, the impatient):
options(texanshootR.consent = TRUE)
Should circumstances call for a fresh start — a new institution, a co-author dispute, an opportune hard-drive failure, or because some of you just want to see the world burn:
reset_career(force = TRUE) reset_achievements(force = TRUE) reset_wardrobe(force = TRUE) reset_all(force = TRUE)
The README covers the seven model families, the message-pack schema, and the design philosophy. The reference index lists every exported function with examples.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.