gstack’s autoplan approvals stop failing on run ids that look like card numbers

2 hours ago

gstack 1.91.186.0 and 1.91.187.0 (2026-10-24): autoplan approval imports stop failing when a timestamp run id passes the credit card checksum, and four docs now match the code: the unattended run contract, the gstack-gate reply grammar, the session kind override and voice triggers. Release notes: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911870---2026-10-24 https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911860---2026-10-24 Commits: https://github.com/garrytan/gstack/commits/main

Ask about this presentation

Chapters

  1. 0:00Approvals
  2. 0:11Run ids
  3. 0:25Unattended
  4. 0:41Gate replies
  5. 0:56Docs
  6. 1:10Next
Show transcript

Approvals

gstack logo

gstack’s autoplan approvals stop failing on run ids that look like card numbers

$ gstack-approvals import run-20261024131504
refused · field ask: pii.cc
imported
ApprovalsRun idsUnattendedGate repliesDocsNext
garrytan/gstack · CHANGELOG.md · 1.91.186.0

Approving an autoplan run used to fail about one time in ten. The import refused the approval, because its run id looked like a credit card number. Those approvals now go through.

Run ids

A run id is a timestamp, and one in ten pass the card checksum

run-20261024131504
14 digits · YYYYMMDDHHMMSS · Luhn-valid
Now skipped · a 14-digit span that reads as a date and time
Still caught · 14-digit Diners Club cards, which start with 3
ApprovalsRun idsUnattendedGate repliesDocsNext
garrytan/gstack · CHANGELOG.md · 1.91.186.0

The default run id is a fourteen-digit timestamp, and about one in ten pass the checksum on card numbers. The card rule now skips those stamps. Diners Club cards start with a three, so they are still caught.

Unattended

Only /autoplan leaves a run directory after an unattended run

/autoplan · run directory and a GSTACK_RESULT line
/ship, /review, /qa · read each skill’s own record
ApprovalsRun idsUnattendedGate repliesDocsNext
garrytan/gstack · CHANGELOG.md · 1.91.187.0

The unattended docs promised a run directory and a result line from every workflow skill. Only /autoplan writes them. For /ship, /review and /qa, the docs now point you to each skill's own record instead.

Gate replies

gstack-gate --help now teaches the reply grammar the gate shows

rec rec except <tokens> <id><option> as-is
Display text only. The parser is unchanged, and all still parses as rec.
ApprovalsRun idsUnattendedGate repliesDocsNext
garrytan/gstack · CHANGELOG.md · 1.91.187.0

The gate's help text taught an old reply grammar without rec or as-is, though the gate's own prompt leads with rec. The help, the owner brief and the troubleshooting page now match. Replies parse as before.

Docs

Three docs now match what the code does

Session kind · GSTACK_SESSION_KIND honors spawned and unattendeddocs/OPENCLAW.md · 1.91.187.0
Voice · only voice-triggers: aliases activate a skillREADME.md · 1.91.187.0
/cso · skips the shared unattended rulesdocs/unattended.md · 1.91.187.0
ApprovalsRun idsUnattendedGate repliesDocsNext
garrytan/gstack · CHANGELOG.md · 1.91.187.0

The docs now say the session kind override honors both spawned and unattended. A spoken phrase activates a skill only through its voice trigger aliases. And /cso skips the shared unattended rules.

Next

For unattended runs, I would start with /autoplan

CHANGELOG.mdgarrytan/gstack · 1.91.186.0 and 1.91.187.0
/eval-plan has no gate.json writer yet.
ApprovalsRun idsUnattendedGate repliesDocsNext
garrytan/gstack · CHANGELOG.md · 1.91.187.0

If I were running gstack unattended today, I would start with /autoplan, because it is the only skill that leaves a result line to check. /eval-plan still has no gate file writer. The full notes are in the gstack changelog.

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built in New York with ❤️