Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
0b8b7f0
chore(plan): update the io-cli roadmap
aakashpawar1999 Aug 17, 2026
1f93d18
chore(plan): specify io-cli 0.2.0
aakashpawar1999 Aug 17, 2026
fc2ec67
chore(develop): plan tasks for io-cli 0.2.0
aakashpawar1999 Aug 17, 2026
da2848a
chore(develop): Build the approver seam — a request out, a decision bac…
aakashpawar1999 Aug 17, 2026
8267204
chore(develop): Render the question as a viewport overlay that commits …
aakashpawar1999 Aug 17, 2026
0f69463
chore(develop): Bind the three answers, commit one line per decision, a…
aakashpawar1999 Aug 17, 2026
b91dda1
chore(develop): Carry a remembered allow into the Policy the next turn …
aakashpawar1999 Aug 17, 2026
6e05220
chore(develop): Cycle the posture on Shift+Tab, name the layer in force…
aakashpawar1999 Aug 17, 2026
cb689d0
chore(develop): Give a refusal its own cell — act, target, rule, layer,…
aakashpawar1999 Aug 17, 2026
23f1c37
chore(develop): Fill the status line's remaining fields, each absent un…
aakashpawar1999 Aug 17, 2026
ac205dd
chore(develop): Give every new surface a defined form at eighty columns
aakashpawar1999 Aug 17, 2026
afcfb7c
chore(develop): Bring the documented surfaces and the structural gates …
aakashpawar1999 Aug 17, 2026
03fc492
chore(develop): The owner runs a real turn under ask-before-writes, app…
aakashpawar1999 Aug 17, 2026
1f65571
chore(develop): checkpoint io-cli 0.2.0
aakashpawar1999 Aug 17, 2026
442d748
chore(develop): checkpoint io-cli 0.2.0
aakashpawar1999 Aug 17, 2026
cca32e0
chore(develop): The owner runs a real turn under ask-before-writes, app…
aakashpawar1999 Aug 17, 2026
937768d
chore(develop): The owner runs a real turn under ask-before-writes, app…
aakashpawar1999 Aug 17, 2026
e58122a
chore(develop): The owner runs a real turn under ask-before-writes, app…
aakashpawar1999 Aug 17, 2026
3044736
chore(release): io-cli 0.2.0
aakashpawar1999 Aug 17, 2026
3cbbaa2
Merge pull request #9 from initorigin/feat/0.2.0
aakashpawar1999 Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .ultraship/checkpoints/20260817T020313Z-io-cli-0.2.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
product: io-cli
version: 0.2.0
timestamp: 2026-08-17T02:03:13Z
reason: blocker
repository_state: passing
completed_acceptance:
- >
F1, F2, F3, F4, F5, F6, F7, F8, F9 — every functional criterion but F10, each with a sabotage
arm run and each arm failing only its own criterion's tests.
- >
N1, N2, N3, N4, N5 — no test sleeps or reads a clock; the dependency set is the same eight
names plus tempfile; every structural property of 0.1.0 still holds; io-cli still contains no
policy engine; every new surface has a defined form at eighty columns.
- >
O1, first half — CI green on macOS, Linux and Windows on feat/0.2.0 at afcfb7c (PR #9), all
eight checks, no re-runs.
- O2 — cargo build --release exit 0; ./target/release/io --version prints io 0.2.0.
- O3, in progress — feat/0.2.0 is cut from develop and PR #9 is open into it.
remaining_acceptance:
- >
F10 — the owner runs the release binary under *ask before writes*, approves one write, denies
another, and says whether the overlay reads right. It cannot be delegated to a test: what this
release ships is a moment, and only a person can say whether a run stopping to ask reads as
clear or as alarming.
- O1, second half — CI green again on the merge to develop.
- O3 — develop to main by pull request, then the tag v0.2.0 pushed alone.
- O4 — the Release carries the same four artifacts and SHA256SUMS.
active_hypotheses: []
next_task: US-IO-CLI-0.2.0-T10
required_context:
- .ultraship/products/io-cli/releases/0.2.0.yaml
- .ultraship/products/io-cli/execution/tasks.yaml
- src/approval.rs
42 changes: 42 additions & 0 deletions .ultraship/products/io-cli/execution/archive/0.2.0.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
product: io-cli
version: 0.2.0
execution_state: DEVELOPING
checkpoint: null
blockers: []
release_fit:
assessment: probable
reasons:
- "The workspace records `preferences.minimize_cost: true` and `allow_parallel_agents: false`,
so this is a sequential build with no fan-out. That limit is the reason the tasks below are
ordered as one vertical path rather than as a wide set: the approver seam, then the overlay
that renders on it, then the answers that resolve it, then the fields around it."
- The workspace records no time, token or monetary budget — `resource_profile.available` is null
on every field — so nothing caps this release except the work itself, and the contract carries
a fallback scope that drops the status fields and then the posture key if it does.
- "`probable` rather than `high`, and the reason is one task. Every release so far has been a
one-way render of an event that arrived; this one adds a callback that must ask a human and
block the agent's own task until it is answered. That is the first bidirectional seam in the
product and the first place it can deadlock. The other eight tasks are the shape of work this
repository has done twice."
- "The workspace constraint that io-cli contains no agent loop, no provider client and no policy
engine is not touched. Every value this release constructs — `Decision`, `Rule`, `Policy` — is
an io-harness type, and every verdict is still the harness's. No io-harness change is
required: the approver seam, the approval context carrying rule and layer, and the `Refused`,
`Contained`, `Compacted` and `Step` events all exist in the locked version, which was read
from the source rather than assumed."
- The code this release changes is the four files a session is drawn from — `src/app.rs`,
`src/status.rs`, `src/events.rs`, `src/picker.rs` — plus the driver, and each already has a
test file pointed at it. The new surface adds one module and one test file.
major_cost_drivers:
- The two-way seam. The approver runs on the run's own task and must ask, wait and answer while
the keyboard stays live so `Ctrl+C` still reaches the turn. F4 is the criterion that keeps it
honest, and it is asserted on a closed channel rather than on a timeout.
- A four-row viewport. An approval that shows a proposed file's content does not fit in it, and
what goes in the overlay versus what commits above it is a design decision the contract left
open on purpose.
- "`Decision::Approve { remember }` is run-scoped and dies with the turn. The obvious
implementation of *allow for the rest of this session* passes every visible test and asks
again on the next prompt; F5 exists because that is the version that would ship by accident."
- "F10, which cannot be automated: a real turn against a live provider under *ask before
writes*, with one write approved and one denied, watched by the owner."
recommended_scope_change: null
Loading