Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
8f83ee2
Stabilize readiness status signals
junsoo186 May 26, 2026
78fd147
Refresh next packet after stage advance
junsoo186 May 26, 2026
0a32728
Require sustained quality evidence
junsoo186 May 26, 2026
bf3142c
Enforce active capability evidence
junsoo186 May 26, 2026
e0f0f81
Stabilize sustained quality flow
junsoo186 May 26, 2026
4c5a258
Polish service quality status evidence
junsoo186 May 26, 2026
25ce48f
Require real active sustained capability
junsoo186 May 26, 2026
e823967
Hide terminal sustained gap
junsoo186 May 26, 2026
699bc7d
Align short status gap with next pressure
junsoo186 May 26, 2026
f8f5dd8
Follow stage gate pressure order
junsoo186 May 26, 2026
af86543
Stabilize growth status signals
junsoo186 May 26, 2026
35a8c2d
Improve file persistence and gap pressure
junsoo186 May 26, 2026
4bd9c84
Refine sustained quality flow
junsoo186 May 26, 2026
29a74ce
Surface migration before next action
junsoo186 May 26, 2026
5e4f64d
Tighten readiness evidence matching
junsoo186 May 26, 2026
9063caa
Refresh next packet during migration
junsoo186 May 26, 2026
00ba4fe
Check next packet consistency in doctor
junsoo186 May 26, 2026
9c34093
Stop auto run when target is reached
junsoo186 May 26, 2026
4c4550f
Warn on next packet during refresh
junsoo186 May 26, 2026
9e1c5cb
Cover sustained auto quality chain
junsoo186 May 26, 2026
6d480da
Name active capabilities in evidence template
junsoo186 May 26, 2026
dd5cf3e
Reject pending active capability evidence
junsoo186 May 26, 2026
be68ef6
Allow explicit active capability blockers
junsoo186 May 26, 2026
144e5d5
Improve first-run plan parsing
junsoo186 May 26, 2026
84309d6
Keep inline plan stages consistent
junsoo186 May 26, 2026
89b0971
Preserve stage stop conditions
junsoo186 May 26, 2026
42ab4ea
Defer benchmark evidence until pressure
junsoo186 May 26, 2026
ff3e339
Tighten sustained quality promotion
junsoo186 May 26, 2026
63815f3
Guard command pattern classification
junsoo186 May 26, 2026
4e7487a
Require finish gate before next packet
junsoo186 May 26, 2026
40109c3
Polish stage flow evidence handling
junsoo186 May 26, 2026
3b18598
Tighten harness candidate threshold
junsoo186 May 26, 2026
5fc0b7c
Accept validation output for active validators
junsoo186 May 26, 2026
51156ca
Keep active validators from being downgraded
junsoo186 May 26, 2026
9112792
Require command-specific validator proof
junsoo186 May 26, 2026
73d1248
Group repeated validation by command
junsoo186 May 26, 2026
b9d3a6c
Reduce runtime packet growth noise
junsoo186 May 26, 2026
844e532
Polish sustained runtime packet guidance
junsoo186 May 26, 2026
03fe767
Tighten service-quality packet evidence
junsoo186 May 26, 2026
295cc25
Clean up visual smoke candidate naming
junsoo186 May 26, 2026
f91f145
Refine auto mode broad focus routing
junsoo186 May 26, 2026
3dcf567
Prevent repair from bypassing failed finish gate
junsoo186 May 26, 2026
66385bb
Accept named CLI output smoke as core UX proof
junsoo186 May 26, 2026
a3cbd43
Harden plan parsing and CLI error evidence
junsoo186 May 26, 2026
7f8db35
Learn all repeated validation commands
junsoo186 May 26, 2026
d68647c
Show all active quality structures in readiness
junsoo186 May 26, 2026
91588e9
Tighten Core UX readiness evidence
junsoo186 May 26, 2026
d89177b
Avoid substring Core UX proof matches
junsoo186 May 26, 2026
a343ae6
Block advancement on latest failure pressure
junsoo186 May 26, 2026
27e3d88
Clean up resolved growth pressures
junsoo186 May 26, 2026
31c0206
Ignore no-op blocker memories
junsoo186 May 26, 2026
8ef62d1
Normalize displayed Hyper paths
junsoo186 May 27, 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
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ For longer Codex Desktop sessions, start with an auto target:
hyper run --auto --until service-quality "Keep upgrading this service"
```

Use `--until sustained-service-quality` when the goal is to keep planning packets after Service Quality and focus on repeatable validators, operational handoff, and friction reduction.

Auto mode does not skip proof or silently advance stages. It keeps the next packet command planned in `.hyper/next-packet.md`; stage changes still require explicit acceptance with `hyper advance`.

In Codex Desktop you can use the same idea as a project command:
Expand Down Expand Up @@ -311,6 +313,22 @@ How do we know this stage is done?
What should the next run improve?
```

Short form also works:

```markdown
# Plan

Project: Service Desk Lite
Current Stage: Tiny MVP
Build Style: Thin vertical slice first.

Product brief:
A teammate can create one support request, see it in a list, and mark it handled.

Validation:
One smoke command proves the create/list/handle flow.
```

If `plan.md` is sparse, Hyper Run may create `.hyper/plan-candidates.md` from README or docs so you can copy useful product context into `plan.md`.

## What `hyper run` Does
Expand Down Expand Up @@ -397,6 +415,7 @@ That updates `plan.md` from the current stage to the next stage, refreshes readi
hyper init # install Hyper Run files in this project
hyper run [focus] # create the next runtime packet
hyper run --auto --until service-quality [focus]
hyper run --auto --until sustained-service-quality [focus]
hyper complete # run the finish gate, close the packet, and learn
hyper advance # apply an accepted stage change when the gate is ready
hyper status # show current stage, gaps, and readiness
Expand Down
16 changes: 16 additions & 0 deletions README_ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,22 @@ Web app
다음 run에서 무엇을 개선해야 하나요?
```

짧게 써도 됩니다.

```markdown
# Plan

Project: Service Desk Lite
Current Stage: Tiny MVP
Build Style: Thin vertical slice first.

Product brief:
팀원이 지원 요청 하나를 만들고, 목록에서 보고, 처리 완료로 바꿀 수 있습니다.

Validation:
하나의 smoke command로 create/list/handle flow를 증명합니다.
```

`plan.md`가 너무 비어 있으면 Hyper Run이 README나 docs를 읽고 `.hyper/plan-candidates.md`를 만들 수 있습니다. 거기서 쓸 만한 제품 문맥을 `plan.md`로 옮기면 됩니다.

## `hyper run`이 하는 일
Expand Down
16 changes: 11 additions & 5 deletions internal/app/advance.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@ func advanceHyper(fsys fsRoot) (commandOutput, *hyperError) {
}
}

nextPlan, nextErr := writeNextPacketPlan(root, state, consistency.Derived, updatedReadiness, growth)
if nextErr != nil {
return commandOutput{}, nextErr
}

lines := []string{
"Hyper Run Stage Advance",
"",
Expand All @@ -125,14 +130,15 @@ func advanceHyper(fsys fsRoot) (commandOutput, *hyperError) {
lines = append(lines,
"Readiness gate: "+readinessGateSummary(updatedReadiness),
"Readiness pressure: "+readinessPressureSummary(updatedReadiness),
"Next action: "+nextPlan.Command,
"Why: "+nextPlan.Reason,
"Next packet plan: "+displayRelPath(hyperDir, "next-packet.md"),
"",
"Next:",
" hyper status",
" "+nextPlan.Command,
)
if updatedReadiness.NextPressure.RecommendedGoal != "" {
lines = append(lines, " hyper run \""+compactText(updatedReadiness.NextPressure.RecommendedGoal, 120)+"\"")
} else {
lines = append(lines, " hyper run [next focus]")
if nextPlan.Command != "hyper status --short" {
lines = append(lines, " hyper status --short")
}
lines = append(lines, "")
return stdout(strings.Join(lines, "\n")), nil
Expand Down
129 changes: 128 additions & 1 deletion internal/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,33 +42,66 @@ func runCLI(args []string, fsys fsRoot, updater updater) (commandOutput, *hyperE
case "", "help", "--help", "-h":
return stdout(usage()), nil
case "init":
if helpRequested(rest) {
return stdout(commandUsage("init")), nil
}
if len(rest) > 0 {
return commandOutput{}, newError("hyper init does not take an objective.\n\nRun `hyper init`, fill in plan.md, then use `hyper run [focus]`.", 2)
}
return initHyper(fsys)
case "run":
if helpRequested(rest) {
return stdout(commandUsage("run")), nil
}
opts, err := parseRunOptions(rest)
if err != nil {
return commandOutput{}, err
}
return runHyper(fsys, opts)
case "status":
if helpRequested(rest) {
return stdout(commandUsage("status")), nil
}
return statusHyper(fsys, rest)
case "doctor":
if helpRequested(rest) {
return stdout(commandUsage("doctor")), nil
}
return doctorHyper(fsys)
case "repair":
if helpRequested(rest) {
return stdout(commandUsage("repair")), nil
}
return repairHyper(fsys)
case "migrate":
if helpRequested(rest) {
return stdout(commandUsage("migrate")), nil
}
return migrateHyper(fsys)
case "resume":
if helpRequested(rest) {
return stdout(commandUsage("resume")), nil
}
return resumeHyper(fsys)
case "complete":
if helpRequested(rest) {
return stdout(commandUsage("complete")), nil
}
return completeHyper(fsys)
case "advance":
if helpRequested(rest) {
return stdout(commandUsage("advance")), nil
}
return advanceHyper(fsys)
case "version":
if helpRequested(rest) {
return stdout(commandUsage("version")), nil
}
return versionHyper()
case "update":
if helpRequested(rest) {
return stdout(commandUsage("update")), nil
}
source := ""
if len(rest) > 0 {
source = rest[0]
Expand All @@ -81,6 +114,18 @@ func runCLI(args []string, fsys fsRoot, updater updater) (commandOutput, *hyperE
}
}

func helpRequested(args []string) bool {
for i, arg := range args {
switch strings.TrimSpace(arg) {
case "--help", "-h":
return true
case "help":
return i == 0 && len(args) == 1
}
}
return false
}

func runInternal(args []string, fsys fsRoot) (commandOutput, *hyperError) {
if len(args) > 0 && args[0] == "learn" {
return learnCurrentGoal(fsys)
Expand Down Expand Up @@ -113,7 +158,7 @@ func usage() string {
"Primary flow:",
" Run `hyper init` once in a project to install Hyper Run settings.",
" Edit plan.md, then use `hyper run [focus]` to create the next runtime packet.",
" Use `hyper run --auto --until service-quality [focus]` when Codex should keep planning the next packet until the target stage.",
" Use `hyper run --auto --until service-quality [focus]` or `--until sustained-service-quality` when Codex should keep planning packets toward a target stage.",
" After updating evidence.md and next.md, use `hyper complete` to turn evidence into pressure, candidates, and readiness.",
" `hyper complete` runs the finish gate first; fix review.md findings in the same packet before continuing.",
" When `hyper status` says the stage gate is ready, use `hyper advance` to apply the accepted stage change.",
Expand All @@ -132,6 +177,88 @@ func usage() string {
}, "\n")
}

func commandUsage(command string) string {
lines := map[string][]string{
"init": {
"Usage:",
" hyper init",
"",
"Creates `plan.md`, `.hyper/`, and Codex Desktop routing files in the current project.",
"Use `hyper run [focus]` for the current work objective; do not pass the objective to `hyper init`.",
},
"run": {
"Usage:",
" hyper run [--auto] [--until stage] [focus]",
"",
"Creates the next runtime packet from `plan.md`, prior evidence, pressure, and readiness.",
"Options:",
" --auto Continue packet-by-packet through the generated next-packet plan.",
" --until <stage> Plan auto continuation toward tiny-mvp, usable-mvp, beta, service-quality, or sustained-service-quality.",
},
"status": {
"Usage:",
" hyper status",
" hyper status --short",
"",
"Shows current stage, gate, proof, pressure, next action, and blocking gaps.",
},
"doctor": {
"Usage:",
" hyper doctor",
"",
"Checks install path, version, project state, SQLite, migration freshness, and Codex Desktop routing.",
},
"repair": {
"Usage:",
" hyper repair",
"",
"Refreshes generated project state when files are missing or stale.",
},
"migrate": {
"Usage:",
" hyper migrate",
"",
"Refreshes project state, growth rules, readiness, and next-packet planning after a CLI update.",
},
"resume": {
"Usage:",
" hyper resume",
"",
"Prints the current runtime packet handoff if an active packet exists.",
},
"complete": {
"Usage:",
" hyper complete",
"",
"Runs the finish gate, learns from `evidence.md` and `next.md`, then refreshes growth and readiness.",
},
"advance": {
"Usage:",
" hyper advance",
"",
"Updates `plan.md` to the next stage only when the readiness gate is ready and the user accepts the change.",
},
"version": {
"Usage:",
" hyper version",
"",
"Shows build version, commit, build date, platform, executable path, and update source.",
},
"update": {
"Usage:",
" hyper update [source]",
"",
"Installs the latest Hyper Run binary from the configured GitHub release or provided source.",
},
}
body := lines[command]
if len(body) == 0 {
return usage()
}
out := append([]string{"Hyper Run " + command, ""}, body...)
return strings.Join(out, "\n")
}

type fsRoot interface {
root() string
}
Expand Down
Loading
Loading