Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ cargo run -p decodex --bin decodex -- radar refresh-upstream-queue
cargo run -p decodex --bin decodex -- radar refresh-release-delta
cargo run -p decodex --bin decodex -- radar validate
cargo run -p decodex --bin decodex -- run --dry-run
cargo run -p decodex --bin decodex -- serve --listen-address 127.0.0.1:8912
cargo run -p decodex --bin decodex -- serve --listen-address 127.0.0.1:8192
```

Project-scoped commands accept `--config <PROJECT_DIR>` after the subcommand when the
Expand Down Expand Up @@ -261,7 +261,7 @@ node dev/operator-dashboard-mock.mjs --listen-address 127.0.0.1:57399
node dev/operator-dashboard-mock.mjs --listen-address 127.0.0.1:57399 --use-codex-auth
```

Use hidden `decodex serve --dev --listen-address 127.0.0.1:8912` only when
Use hidden `decodex serve --dev --listen-address <ADDR>` only when
developing local account/app snapshot APIs against real runtime state while explicitly
avoiding scheduler activity. Dev mode deliberately does not register projects, poll
Linear, dispatch work, or accept `--config`. Decodex App's normal
Expand Down
16 changes: 15 additions & 1 deletion apps/decodex/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ struct ServeCommand {
#[command(flatten)]
project_config: ProjectConfigArgs,
/// Operator UI listen address.
#[arg(long, value_name = "ADDR", default_value = "127.0.0.1:8912")]
#[arg(long, value_name = "ADDR", default_value = "127.0.0.1:8192")]
listen_address: String,
/// Start the local dev endpoint without polling or dispatching projects.
#[arg(long, hide = true)]
Expand Down Expand Up @@ -1641,6 +1641,20 @@ mod tests {
assert!(error.to_string().contains("[ISSUE]"));
}

#[test]
fn parses_serve_default_listen_address() {
let cli = Cli::parse_from(["decodex", "serve"]);

assert!(matches!(
cli.command,
Command::Serve(ServeCommand {
project_config: ProjectConfigArgs { config: None },
listen_address,
dev: false,
}) if listen_address == "127.0.0.1:8192"
));
}

#[test]
fn parses_serve_with_listen_address_and_project_config() {
let cli = Cli::parse_from([
Expand Down
2 changes: 1 addition & 1 deletion docs/runbook/lane-control-recovery.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Use the local HTTP API only against the same trusted listener when CLI access is
the active surface:

```sh
curl -sS 'http://127.0.0.1:8912/api/lane/inspect?projectId=<service-id>&issue=<ISSUE>&runId=<RUN_ID>'
curl -sS 'http://127.0.0.1:8192/api/lane/inspect?projectId=<service-id>&issue=<ISSUE>&runId=<RUN_ID>'
```

Before mutating anything, confirm:
Expand Down
20 changes: 10 additions & 10 deletions docs/runbook/self-dogfood-pilot.md
Original file line number Diff line number Diff line change
Expand Up @@ -330,13 +330,13 @@ wants to observe the self-bootstrap loop without reading source code.
```sh
git rev-parse --short HEAD
decodex --version
SERVE_PID=$(lsof -tiTCP:8912 -sTCP:LISTEN)
lsof -nP -iTCP:8912 -sTCP:LISTEN
SERVE_PID=$(lsof -tiTCP:8192 -sTCP:LISTEN)
lsof -nP -iTCP:8192 -sTCP:LISTEN
ps -p "$SERVE_PID" -o pid,lstart,command
curl -fsS http://127.0.0.1:8912/livez
curl -fsS http://127.0.0.1:8192/livez
```

Use the port from the active `--listen-address` if it is not `127.0.0.1:8912`.
Use the port from the active `--listen-address` if it is not `127.0.0.1:8192`.
Treat a missing listener, a binary revision that does not match the current landed
`HEAD`, or a `decodex serve` start time older than the latest runtime or dashboard
landing as stale evidence. Restart `decodex serve` after reinstalling or after any
Expand Down Expand Up @@ -419,7 +419,7 @@ wants to observe the self-bootstrap loop without reading source code.
```sh
decodex project add ~/.codex/decodex/projects/decodex
decodex project list
decodex serve --listen-address 127.0.0.1:8912
decodex serve --listen-address 127.0.0.1:8192
```

`serve` owns one operator UI and schedules all enabled registered projects from the
Expand All @@ -439,15 +439,15 @@ wants to observe the self-bootstrap loop without reading source code.
issues, trigger the next scan explicitly instead of waiting for that window:

```sh
curl -sS -X POST http://127.0.0.1:8912/api/linear-scan \
curl -sS -X POST http://127.0.0.1:8192/api/linear-scan \
-H 'Content-Type: application/json' \
-d '{"projectId":"decodex"}'
```

5. Open the operator dashboard:

```text
http://127.0.0.1:8912/
http://127.0.0.1:8192/
```

For dashboard section meanings and local-vs-external state ownership, read
Expand Down Expand Up @@ -537,8 +537,8 @@ wants to observe the self-bootstrap loop without reading source code.
timing when the ledger recorded those fields; raw attempts and heartbeat details
stay in the expanded debug view.
To validate rich local closeout persistence after a lane completes, keep
`decodex serve --listen-address 127.0.0.1:8912` running and inspect
`decodex status --json` or the 8912 dashboard `Run Ledger`, not a replay of Linear
`decodex serve --listen-address 127.0.0.1:8192` running and inspect
`decodex status --json` or the operator dashboard `Run Ledger`, not a replay of Linear
comments. The completed row should still expose the local `run_id`, attempt
number, lifecycle status, PR or landing reference, closeout or attention reason,
elapsed timing, and debug-only raw attempt or heartbeat details after the lane
Expand Down Expand Up @@ -628,7 +628,7 @@ Decodex is intentionally Unix-only, and the control plane relies on Unix file-de
`decodex serve` owns the local operator console. Use `--listen-address` when you need a non-default bind address:

```sh
decodex serve --listen-address 127.0.0.1:8912
decodex serve --listen-address <ADDR>
```

`serve` has no interval override. It publishes local operator snapshots every
Expand Down
2 changes: 1 addition & 1 deletion plugins/decodex/skills/automation/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ project. After creating or relabeling queued issues, request the next scan inste
waiting for the 5-minute window:

```sh
curl -sS -X POST http://127.0.0.1:8912/api/linear-scan \
curl -sS -X POST http://127.0.0.1:8192/api/linear-scan \
-H 'Content-Type: application/json' \
-d '{"projectId":"<service-id>"}'
```
Expand Down
2 changes: 1 addition & 1 deletion plugins/decodex/skills/manual-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ Manual commit and landing are separate narrow workflows:
for the 5-minute Linear poll:

```sh
curl -sS -X POST http://127.0.0.1:8912/api/linear-scan \
curl -sS -X POST http://127.0.0.1:8192/api/linear-scan \
-H 'Content-Type: application/json' \
-d '{"projectId":"<service-id>"}'
```
Expand Down