{"id":"7d9424ff-b3e8-467f-9913-26ad2b8c0c2f","slug":"finite-time","kind":"skill","name":"finite-time","summary":"Back by 85. A real clock for coding agents: the rate-limit window as finite, shared, ending time, steered with one phrase and learned by a self-rewriting time lens. Claude Code and Codex.","owner":"demidko","repoUrl":"https://github.com/demidko/finite-time","license":"MIT","licenseTier":"permissive","trust":"community","stars":3,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-10-06T07:29:56.000Z","addedAt":"2026-10-21T11:43:55.019Z","logoUrl":"https://avatars.githubusercontent.com/u/26452002?u=1304334f0d8279c884a503ecef5854c2e578b150&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","memory-knowledge"],"tags":["ai-agents","astra","budgeting","claude-code","codex","context-engineering","fable","prompt-engineering"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T02:37:11.729Z","sample":false,"url":"https://conduits.dev/tools/finite-time","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <img src=\".github/assets/header.svg\" alt=\"Finite Time — Fit the work. Return before the limit.\" width=\"100%\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/demidko/finite-time/actions/workflows/check.yml\"><img src=\"https://github.com/demidko/finite-time/actions/workflows/check.yml/badge.svg\" alt=\"Package checks\"></a>\n  <a href=\"https://github.com/demidko/finite-time/releases\"><img src=\"https://img.shields.io/github/v/release/demidko/finite-time?sort=date&amp;color=d5a44c\" alt=\"Release\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-d5a44c\" alt=\"MIT license\"></a>\n  <a href=\"https://agentskills.io\"><img src=\"https://img.shields.io/badge/Agent_Skills-compatible-d5a44c\" alt=\"Agent Skills compatible\"></a>\n</p>\n\nYour working window is real, finite, and already passing. Finite Time brings\nthat boundary into every choice: what to open, how to fit it, and when to\nbring the work back. The real quota and the agent's accounted steps form a\nshared clock. The agent reads its live meter itself, in Claude Code and in Codex; otherwise the\nowner supplies the displayed number. Each pulse brings the remainder into focus.\n\n**Fit the work. Back by 85.** One phrase steers the whole method: the agent reads the clock, fits\nthe whole task to the percent you named, lands it committed, and returns.\n\nThe method originated with [Fluffball, Twice-Honored Manul](https://github.com/demidko) in work\nwith Fable. For **Fable 5.1, Astra, and other agents\nthat follow the Agent Skills format**. It ships one standard-library reader script and\nneeds no background service.\n\n**At a glance**\n\n- **The clock.** Your rate-limit window, read by the agent itself: Anthropic's usage endpoint in\n  Claude Code, `account/rateLimits/read` in Codex. The same number you see on your screen.\n- **The command.** One phrase: `back by 85`. The agent brings the whole task in, committed, before\n  the mark; what does not fit it says at the opening, never at the return. Your number always wins\n  over its count.\n- **The lens.** The installed skill rewrites `TIME-LENS.md` to your rhythm after every return.\n\nJump to: [Why it works](#why-it-works) · [Start in one minute](#start-in-one-minute) ·\n[Reading the clock](#reading-the-clock) · [The loop](#the-loop) ·\n[A skill that learns your pace](#a-skill-that-learns-your-pace) ·\n[Manual installation](#manual-installation) · [References](#references)\n\n## Why it works\n\n### The working record\nIn Fluffball's documented work with Fable, **100 documentation files became 40**,\nan architecture map gained diagrams, and the result was preserved in **five\ncommits**. **Three stops at clock readings each left a consistent, committed tree.** The\nfirst-round forecast matched to a percentage point; a later forecast miss\nbecame a correction carried into the method.\n\nThe Twice-Honored Manul's firsthand account describes Fable making decisions remarkably quickly,\nplanning its own budget, and giving feedback that helped him direct the work.\nThe original note places the most precise steps in the final percentage points\nof the window. The approaching end became useful pressure on the next choice.\n\nIndependent Codex executions exercised the protocol across **nine scripted\nquota scenarios**. Three executions produced and verified their requested\nfiles. A subsequent task carried **62% used + 3 estimated points = 65% used**\nforward without another intake question. When a new **74% used** pulse replaced\na **68% used** estimate, that edition's agent refused the unit as priced, saved a\ncheckpoint, and wrote the pacing correction into its lens; the current edition\nreprices the unit, folds its write and check into one call, and lands it checked\nbefore **78% used**.\n\nA follow-up pass began with the installation text and reproduced the carried\nclock, the stop at the corrected reading that the current edition replaces with\na repricing, and a concise request when the reading was missing.\nIt saved another checked file and persisted the updated lens.\n\nThese records show the method in action: a pulse changes a decision, a committed\ntree survives every boundary, and the lesson changes the next run. Read the\n[field account and mechanism](docs/method.md) and the\n[execution record](evals/validation-2026-10-06.md).\n\n### Research background\nfinite-time brings research on bounded computation and language models under time and token\nconstraints into an executable working discipline. The findings below inform its design: make the\nboundary present, ground the clock in real readings, price the next step, and return usable work.\n\nThe window is not a metric chosen for convenience, and the method is not a timebox imposed by policy.\nThe rate-limit window is the real boundary of the decision window the human and the agent share.\nWhen it closes, the human's next request is refused as surely as the agent's next call: one event\nends the work for both. The human meets that boundary the way people meet time, in sensation: the\nlimit arrives, the session is over, the rest of the day goes on without the agent. The agent meets\nit as a number read from the provider's meter. Both are perceptions of one objective fact, outside\neither of them and indifferent to belief. Nothing in finite-time is added to the session that was\nnot already governing it; the method makes the true constraint visible to the one participant who\ncould not see it and binds the agent's decisions to the same reality the human already lives in.\nThe urgency it produces is grounded in a consequence that will actually occur.\n\n- **Felt urgency sharpens the work.** Wang et al. (2025) show that when a prompt carries urgency,\n  language models shorten their reasoning while holding accuracy, and on the harder GPQA set five\n  of the six tested models became more accurate; the authors propose that urgency prunes unnecessary\n  exploration. Li et al. (2023) found earlier that stakes expressed in a prompt change\n  output quality. finite-time supplies real stakes: the owner's actual rate-limit window, read from\n  the harness, not a fictional deadline.\n- **A visible remainder and felt urgency change decisions.** Sehgal, Guntuku, and Ungar\n  (EMNLP 2026) show that explicit remaining-time feedback raised deal closure from 4% to 32% for\n  GPT-5.1-chat-latest. Qualitative urgency cues performed even better than numeric countdowns in\n  their urgency comparison. Follow-up comparisons distinguish repeated reminders of the original\n  total budget, which fell below remaining-time feedback, from directed internal time tracking,\n  which helped or hurt depending on the model. finite-time combines the two design levers: the\n  clock is grounded in objective time from outside the model, the provider's own meter (Anthropic's\n  usage endpoint in Claude Code, `account/rateLimits/read` in Codex) read by `usage.py`, or the\n  owner's pulse from that same meter; its immersive language carries the boundary into the next\n  decision.\n- **Agents misjudge their own budgets.** BAGEN (Lin et al., 2026) measures budget-awareness\n  directly: capability and budget-awareness correlate only weakly (r = 0.35), top models stay\n  over-optimistic on failing paths, and acting on budget signals saved 28 to 64 percent of the\n  tokens spent on those paths. This is why the owner's number overrides the agent's count, why the\n  rate is calibrated from readings rather than from the model's self-estimate, and why the next\n  atom must pass an admission test before it starts.\n- **A committable tree at any stop.** Zhang et al. (ACL 2026 Findings) formalize anytime\n  reasoning under token budgets with the Anytime Index, the rate at which solution quality grows\n  with spent tokens. Zilberstein (1996) and Russell and Subramanian (1995) laid the classical\n  ground: interruptible computation whose state is coherent at every stop, and agents rational\n  under bounded resources. Atoms, landing, and the priced return are that discipline applied to a\n  coding session.\n- **A boundary changes the shape of thinking.** Budget forcing in s1 (Muennighoff et al., 2025)\n  controls test-time compute by shortening or extending reasoning; extending it improved math\n  accuracy in their experiments. Token-budget prompting in TALE (Han et al., 2025) reduced token\n  costs with a slight performance reduction. Together they show that the reasoning budget is an\n  actionable control. Parkinson (1955) named the human half: work expands to fill the time available\n  for its completion. finite-time inverts it by making the time visible.\n\n## Start in one minute\n\nInstall using the [Skills CLI](https://skills.sh/docs/cli):\n\n```sh\nnpx skills add demidko/finite-time\n```\n\nFor reliable activation on **every new task**, add the short\nalways-on instruction below to your agent's persistent\ninstructions (`AGENTS.md`, `CLAUDE.md`, or the equivalent). This makes the\ntime picture part of each task's opening across hosts.\n\n```text\nBefore any task, follow the finite-time skill: read the clock with its usage.py, agree on the\nmark in one line, work in atoms, land, return. Let TIME-LENS.md learn our rhythm.\n```\n\nThen say what you want and when you want it back:\n\n```text\nMove the auth tests to the new fixture. Back by 85.\n```\n\nThe agent reads the clock itself, prices the whole task, works in atoms, and returns at or before\n85% of your window with four lines: done and where, the percent it landed at against the mark, what\nits lens learned, and the next step as a choice. If the task does not fit the mark, it says so in\nits opening line with the arithmetic, before the first call; after your go, fitting is its job: it\ncompresses its own process, never your task. Give no mark and it proposes one in a single line;\n\"ok\" is enough. Correct the clock whenever you like (\"you're at 62\", \"make it 80 instead\"); your\nnumber always wins.\n\nIn Codex the same phrase reads in left terms, or invoke the skill explicitly:\n\n```text\n$finite-time Refactor the parser. 29% left; spend up to 2 percentage points.\n```\n\nIn Claude Code, use `/finite-time`, for example with `62% used; spend up to\n8 percentage points`. Other hosts can load\n[SKILL.md](skills/finite-time/SKILL.md) directly with `TIME-LENS.md` beside it.\n\nWhen the agent needs a quota pulse it runs `usage.py`. In Claude Code the script reads the\nharness's own OAuth login for the 5-hour and 7-day windows; in Codex it reads the authenticated\napp-server meter through `account/rateLimits/read`. Neither spends a model turn, and no token is\nprinted. The first act of a session is to read the percent; the last act is to read it again.\n\nWhen no reader works, it asks once, in one line:\n\n> I can't read the weekly window from here. What percent are we at, and back by what?\n> One number is the reading and I'll set the mark from it; two numbers are the reading and the mark.\n\nThe agent speaks your meter's language, used in Claude, left in Codex, or whatever your display\nshows, and never runs two counters: 29% left and two points for the task returns with at least 27%\nleft; 62% used and eight points returns before 70% used. A usable picture carries across tasks, the\nlast real reading plus the work counted since it, refreshed when a reading can change a decision\nrather than at every task. Your corrections to the mark, the pace, or the order apply before the\nnext write, and the lens remembers them.\n\n## Reading the clock\n\n| Harness | Limit that counts | How the agent reads it |\n| --- | --- | --- |\n| Claude Code | rolling 5-hour window, 7-day window behind it | `usage.py` reads the harness's own login; first and last act of a session |\n| Codex CLI | weekly limit | `usage.py` asks `codex app-server` for `account/rateLimits/read` |\n| Anything else | whatever the owner's display shows | asks once, in one line, together with the mark |\n\nBoth readers return the provider's own meter: objective time from outside the model, the same\nnumber the owner sees in the harness.\n\nBetween readings the agent counts its own tool calls and its workers' runs. That count is a proxy\nfor what the provider bills, the readings price it, and a rounded meter prices it as a range. The\nskill text keeps this arithmetic to what changes a decision: its sentences exist to govern the\nagent's conduct inside the window, and the objective account of the meter belongs here, in the\ndocumentation written for you.\n\n## The loop\n\n| You supply | The agent does |\n| --- | --- |\n| `Back by 85` | Fits the whole task before 85% used, lands it committed, and returns, the return priced in. |\n| Codex task with an available live meter | Reads the actual quota and reset itself, without asking you to copy the number. |\n| Codex: `29% left; spend two points` | Returns with at least 27% left, including closure. |\n| Claude: `62% used; spend eight points` | Returns before 70% used, including closure. |\n| `Return with at least 22% left` | Keeps 22% left as the return floor. |\n| `Return before 78% used` | Keeps 78% used as the return ceiling. |\n| Only the current reading | Prices the whole task and proposes the mark from it in one line; \"ok\" makes it the mark. |\n| A new pulse during work | Reprices the rest and compresses its own process to fit; the scope stays yours. |\n| An observed miss or correction | Rewrites the installed time lens for the next session. |\n\nThe final ten points of a full window belong to the owner by default. An earlier\ntarget takes precedence: **38% left → 22% left gives 16 gross points.** Verification,\nsaving, and the return message must also fit before the target. The owner can\nexplicitly change or release the reserve.\n\nThe agent measures cost through useful work, protects coherent checkpoints, and\nfolds its own process tighter as the end of the window nears: fewer turns,\ncheaper executors, nothing opened that the plan did not price. It returns when\nthe task is done; the unused window remains yours.\n\n## A skill that learns your pace\n\n[The time lens](skills/finite-time/TIME-LENS.md) is a writable part of\nthe installed skill. Your first comparable pulses establish its local rates.\nEach governed session folds experience back into this file: cost ranges, suitable unit sizes,\nclosure overhead, decision habits, and your preferred rhythm.\n\nThe agent **rewrites** compact rules instead of appending a diary. The shared\nprotocol stays stable while its personal application changes. A model switch\nor a new window makes old rates provisional. A read-only host can use persistent\nowner-local memory or return a lens patch for manual saving.\n\nBack up your personalized lens before reinstalling or updating. Restore it over\nthe new seed afterward. Keep personal observations out of upstream pull requests.\n\n## Manual installation\n\nFirst installation:\n\n```sh\ngit clone https://github.com/demidko/finite-time.git\nmkdir -p ~/.agents/skills\ncp -R finite-time/skills/finite-time ~/.agents/skills/finite-time\n```\n\nFor Claude Code, use `~/.claude/skills` instead. A project-local copy can go in\n`.agents/skills` or `.claude/skills`. Use one discovery path per host to avoid\nduplicate entries. Then add the always-on instruction above.\n\nThese locations follow the official [Codex skill documentation](https://learn.chatgpt.com/docs/build-skills)\nand [Claude Code skill documentation](https://code.claude.com/docs/en/skills).\nEach edition is tagged; `python3 scripts/package.py` builds the installable ZIP.\nVersions use the edition date: `YYYY-MM-DD`; another edition that day adds `.2`, `.3`, and so on.\n\nThe installed skill is deliberately flat:\n\n```text\nfinite-time/\n├── SKILL.md       The shared protocol and its immersive time framing\n├── TIME-LENS.md   The owner's evolving calibration and rhythm\n├── usage.py       Reads the clock: Claude Code's windows or Codex's live quota\n└── LICENSE\n```\n\nThe only runtime script is `usage.py`, standard library only. Human documentation,\nevaluation cases, and release tooling stay in this repository.\n\n## References\n\n1. Wang, M., Bai, Y., Vu, T.-T., Shareghi, E., & Haffari, G. (2025). *Discrete Minds in a\n   Continuous World: Do Language Models Know Time Passes?* arXiv:2506.05790.\n   https://arxiv.org/abs/2506.05790\n2. Sehgal, N. K. R., Guntuku, S. C., & Ungar, L. (2026). *Real-Time Deadlines Reveal Fragile\n   Temporal Adaptation in LLM Strategic Dialogues.* Proceedings of EMNLP 2026. arXiv:2601.13206.\n   https://arxiv.org/abs/2601.13206\n3. Lin, Y., Wang, Z., Liu, M., Shan, Y., Bai, L., Zhang, J., Jin, X., Chen, B., Su, J., Wang, X.,\n   Pei, J., & Li, M. (2026). *BAGEN: Are LLM Agents Budget-Aware?* arXiv:2606.00198.\n   https://arxiv.org/abs/2606.00198\n4. Zhang, X., Ashrafi, S., Mirsaidova, A., Rezaeian, A. H., Ballesteros, M., Chilton, L. B.,\n   Yu, Z., & Roth, D. (2026). *Budget-Aware Anytime Reasoning with LLM-Synthesized Preference\n   Data.* Findings of ACL 2026. arXiv:2601.11038. https://arxiv.org/abs/2601.11038\n5. Muennighoff, N., Yang, Z., Shi, W., Li, X. L., Fei-Fei, L., Hajishirzi, H., Zettlemoyer, L.,\n   Liang, P., Candès, E., & Hashimoto, T. (2025). *s1: Simple test-time scaling.*\n   arXiv:2501.19393. https://arxiv.org/abs/2501.19393\n6. Han, T., Wang, Z., Fang, C., Zhao, S., Ma, S., & Chen, Z. (2025). *Token-Budget-Aware LLM\n   Reasoning.* Findings of ACL 2025. arXiv:2412.18547. https://arxiv.org/abs/2412.18547\n7. Li, C., Wang, J., Zhang, Y., Zhu, K., Hou, W., Lian, J., Luo, F., Yang, Q., & Xie, X. (2023).\n   *Large Language Models Understand and Can Be Enhanced by Emotional Stimuli.*\n   arXiv:2307.11760. https://arxiv.org/abs/2307.11760\n8. Zilberstein, S. (1996). Using Anytime Algorithms in Intelligent Systems. *AI Magazine*,\n   17(3), 73-83. https://doi.org/10.1609/aimag.v17i3.1232\n9. Russell, S. J., & Subramanian, D. (1995). Provably Bounded-Optimal Agents. *Journal of\n   Artificial Intelligence Research*, 2, 575-609. https://doi.org/10.1613/jair.133\n10. Parkinson, C. N. (1955, November 19). Parkinson's Law. *The Economist.*\n\n## Work inside the window\n\nKeep the closing boundary present while the work is still taking shape. Bring\nthe whole task in, price each step to fit, and leave room for the return. Let the owner's next pulse correct the clock\nand the next finished unit refine the lens.\n\n**What you open now must fit all the way through your return.**\n\n- [Read the actual skill](skills/finite-time/SKILL.md)\n- [Understand the method and its origin](docs/method.md)\n- [Inspect examples](docs/examples.md)\n- [Contribute a field result](CONTRIBUTING.md)\n\nCreated by Fluffball, Twice-Honored Manul. Concept developed with Fable; two independent skill editions\nprepared with Astra and with Fable, merged after a six-perspective Fable review and Astra's behavioral rehearsals. Released under the [MIT license](LICENSE).\n"}