Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
ab5f429
Merge pull request #127 from try-works/dev
try-works Aug 14, 2026
f4bfe41
chore(release): promote v0.0.10 launcher hotfix to stage (#130)
try-works Aug 14, 2026
a0cfdfb
ci: publish accepted stage release candidates
try-works Aug 14, 2026
c8af993
chore(release): synchronize v0.0.10 cooldown hotfix to dev (#134)
try-works Aug 14, 2026
964d08a
Merge branch 'stage' into dev
try-works Aug 14, 2026
57816e7
chore(release): stage v0.0.10 adaptive cooldown hotfix (#135)
try-works Aug 14, 2026
a2e5b4f
fix(runtime): separate telemetry totals from bounded pages
try-works Aug 15, 2026
a9dd452
merge: synchronize run 90 with current dev
try-works Aug 15, 2026
a0eff54
Merge pull request #137 from try-works/recursive/90-telemetry-query-s…
try-works Aug 15, 2026
b3791d7
feat(run91): add reasoning effort instance identity
try-works Aug 20, 2026
c8c3220
fix(router): make effort variants readable and independently configur…
try-works Aug 20, 2026
da129ae
fix(runtime): migrate legacy effort endpoint identities
try-works Aug 20, 2026
31506da
merge: update stage release candidate workflow from dev
try-works Aug 21, 2026
853e6ea
ci: publish accepted stage release candidates
try-works Aug 21, 2026
fc5240a
feat(run91): complete effort-aware runtime and UI remediation
try-works Aug 21, 2026
68f71f3
Merge remote-tracking branch 'origin/dev' into recursive/91-reasoning…
try-works Aug 21, 2026
4ec9939
fix(run91): make delivery validation deterministic
try-works Aug 21, 2026
05e316d
feat: complete Run 91 effort instance identity
try-works Aug 21, 2026
d59f07b
chore: synchronize stage hotfix history into dev
try-works Aug 21, 2026
2fd98e6
chore: promote Run 91 effort identity to stage
try-works Aug 21, 2026
0447426
docs: add run 92 convergence requirements
try-works Aug 21, 2026
4985426
docs: record run 92 requirements lock
try-works Aug 21, 2026
6fd8da1
docs: scaffold run 92 worktree record
try-works Aug 21, 2026
cb78bf2
docs: lock run 92 Phase 0 worktree context
try-works Aug 21, 2026
392ec61
Run 92 Phase 1: AS-IS authority-chain audit (locked)
try-works Aug 21, 2026
fc8bd32
Run 92 Phase 1.5: root-cause reduction (locked)
try-works Aug 21, 2026
526d76e
Run 92 Phase 2: TO-BE plan (locked)
try-works Aug 21, 2026
0554051
Run 92 SP2: truthful candidate-space + missing-as-n/a
try-works Aug 21, 2026
01537fb
feat(run-92): membership revision, truthful candidate space, controll…
try-works Aug 21, 2026
abff2ef
docs(run-92): lock Phases 3-8, decisions/state/memory closeout
try-works Aug 21, 2026
b81a898
style(run-92): biome format + remove non-null assertion
try-works Aug 21, 2026
60f346e
feat(run-92): configured model pool benchmark convergence (#141)
try-works Aug 21, 2026
d6db2cb
docs(recursive): add run 92 stage remediation plan
try-works Aug 21, 2026
682ac81
docs(recursive): extend run 92 remediation scope
try-works Aug 21, 2026
0799cf5
fix(run92): bind benchmark profiles to configured pool
try-works Aug 21, 2026
8cc47f3
fix(vendor): resolve unique configured LiteLLM aliases
try-works Aug 21, 2026
e939176
Merge pull request #142 from try-works/recursive/92-profile-revision-…
try-works Aug 21, 2026
1aab051
Merge branch 'stage' into dev
try-works Aug 21, 2026
4ab4af3
Merge pull request #143 from try-works/dev
try-works Aug 21, 2026
cdda5d6
docs(recursive): create run 93 requirements
try-works Aug 21, 2026
ba10400
fix(run93): enforce variant admission and model-pool integrity
try-works Aug 22, 2026
1e42599
fix: keep restart validation hermetic
try-works Aug 22, 2026
0c5afef
test: keep restart admission fixtures hermetic
try-works Aug 22, 2026
b9b8432
test: align runtime refresh shell contract
try-works Aug 22, 2026
7278678
test(run93): cover endpoint admission readiness fixtures
try-works Aug 22, 2026
e59988c
test(run93): keep admission validation hermetic
try-works Aug 22, 2026
6a8377b
docs(run93): reconcile CI repair closeout
try-works Aug 22, 2026
f66e2e5
test(run93): make paired packaging checks hermetic
try-works Aug 22, 2026
cbf1513
test(run93): bound vendor validation under CI load
try-works Aug 22, 2026
f4c5a19
Merge pull request #144 from try-works/recursive/93-variant-admission…
try-works Aug 22, 2026
2e72e86
Merge branch 'stage' into dev
try-works Aug 22, 2026
e50f1cc
Merge pull request #145 from try-works/dev
try-works Aug 22, 2026
a8fe356
fix(release): keep paired source out of provenance tree
try-works Aug 22, 2026
e93d285
Merge pull request #146 from try-works/fix/run93-stage-package-cleanl…
try-works Aug 22, 2026
64968bf
Merge branch 'stage' into dev
try-works Aug 22, 2026
c641370
Merge pull request #147 from try-works/dev
try-works Aug 22, 2026
f5e618b
ci: add CircleCI public validation
try-works Aug 22, 2026
c14f248
ci: stabilize full validation budgets
try-works Aug 22, 2026
a13e553
docs: make CircleCI the release validation authority
try-works Aug 22, 2026
09b42ad
Merge pull request #148 from try-works/ci/run93-circleci-real-validation
try-works Aug 22, 2026
0ee8384
Merge branch 'stage' into dev
try-works Aug 22, 2026
890e4f4
Merge pull request #149 from try-works/dev
try-works Aug 23, 2026
8607f5f
fix: complete Run 93 OAuth admission remediation (#151)
try-works Aug 23, 2026
23f91a1
Merge pull request #152 from try-works/dev
try-works Aug 23, 2026
42359e6
fix(release): preserve stage manifest commit provenance
try-works Aug 23, 2026
ee1884f
Merge pull request #153 from try-works/fix/stage-manifest-commit-iden…
try-works Aug 23, 2026
621949e
Merge pull request #155 from try-works/stage
try-works Aug 23, 2026
d5f0b00
Merge pull request #154 from try-works/dev
try-works Aug 23, 2026
b29cfd5
fix: make benchmark completion and OAuth health truthful (#156)
try-works Aug 23, 2026
699fad4
Merge pull request #158 from try-works/stage
try-works Aug 23, 2026
f8f24a1
Merge pull request #157 from try-works/dev
try-works Aug 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
76 changes: 76 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
version: 2.1

executors:
node24:
docker:
- image: cimg/node:24.4.1
resource_class: medium
working_directory: ~/project

commands:
install-public:
steps:
- run:
name: Enable Corepack and configure the pnpm store
command: |
corepack enable
corepack pnpm config set store-dir ~/.pnpm-store
- restore_cache:
keys:
- public-pnpm-v1-{{ checksum "pnpm-lock.yaml" }}
- run:
name: Install the frozen public dependency graph
command: corepack pnpm install --frozen-lockfile
- save_cache:
key: public-pnpm-v1-{{ checksum "pnpm-lock.yaml" }}
paths:
- ~/.pnpm-store
install-rust:
steps:
- restore_cache:
keys:
- public-rust-v1-{{ checksum "role-model-router/rust/Cargo.lock" }}
- run:
name: Install the stable Rust toolchain
command: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
echo 'source "$HOME/.cargo/env"' >> "$BASH_ENV"
- run:
name: Verify the Rust toolchain is available
command: |
source "$HOME/.cargo/env"
rustc --version
cargo --version
- save_cache:
key: public-rust-v1-{{ checksum "role-model-router/rust/Cargo.lock" }}
paths:
- ~/.cargo/registry
- ~/.cargo/git
- ~/.rustup/toolchains

jobs:
full-contract:
executor: node24
steps:
- checkout
- install-rust
- install-public
- run:
name: Run the maintained public CI contract
command: |
source "$HOME/.cargo/env"
corepack pnpm run ci:check
router-contract:
executor: node24
steps:
- checkout
- install-public
- run:
name: Run the router and trace verification lane
command: corepack pnpm run runtime:test-router

workflows:
validation:
jobs:
- full-contract
- router-contract
1 change: 0 additions & 1 deletion .codex/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ Bridge guidance only:
- If this file conflicts with `/.recursive/RECURSIVE.md`, follow `/.recursive/RECURSIVE.md`.
- Control-plane docs live under `/.recursive/`.
- Runs live under `/.recursive/run/<run-id>/`.
- New `recursive/*` run branches start from and target `dev`; `stage` and `main` are promotion branches.
- Durable memory lives under `/.recursive/memory/`.
- If recursive-mode is invoked in a repo that does not yet contain the `/.recursive/` scaffold, bootstrap it automatically with the supported install script before continuing. Do not require the user to run a separate manual bootstrap step unless no supported runtime is available.

Expand Down
9 changes: 9 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# RECURSIVE-MODE-MEMORY-POINTERS:START
# recursive-mode memory pointers
# Canonical repository memory lives under `/.recursive/memory/`.
# Read `/.recursive/memory/MEMORY.md` before loading any other memory docs.
# Load only the memory docs relevant to the current task.
# When repository experiential memory may help, run:
# python .recursive/scripts/recursive-training-loader.py --repo-root . --query "<task>" --files "<path1,path2>"
# This file is only a pointer surface; the canonical memory store remains `/.recursive/memory/`.
# RECURSIVE-MODE-MEMORY-POINTERS:END
9 changes: 9 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!-- RECURSIVE-MODE-MEMORY-POINTERS:START -->
## recursive-mode memory pointers

- Canonical repository memory lives under `/.recursive/memory/`.
- Read `/.recursive/memory/MEMORY.md` before loading any other memory docs.
- Load only the memory docs relevant to the current task.
- When repository experiential memory may help, run `python .recursive/scripts/recursive-training-loader.py --repo-root . --query "<task>" --files "<path1,path2>"`.
- Treat this file as a pointer only; the canonical memory store remains `/.recursive/memory/`.
<!-- RECURSIVE-MODE-MEMORY-POINTERS:END -->
151 changes: 151 additions & 0 deletions .github/workflows/accept-release-candidate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
name: accept-release-candidate

on:
workflow_dispatch:
inputs:
candidate_tag:
description: Exact stage prerelease tag, for example stage-rc-0123456789ab
required: true
type: string
accept:
description: I installed and tested this exact release candidate and approve production promotion
required: true
default: false
type: boolean

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

concurrency:
group: accept-release-candidate-${{ inputs.candidate_tag }}
cancel-in-progress: false

jobs:
accept:
name: record release candidate acceptance
if: inputs.accept == true
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Verify published stage prerelease
id: candidate
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CANDIDATE_TAG: ${{ inputs.candidate_tag }}
shell: bash
run: |
if [[ ! "$CANDIDATE_TAG" =~ ^stage-rc-[0-9a-f]{12}$ ]]; then
echo "Candidate tag must use stage-rc-<12 lowercase hex commit characters>."
exit 1
fi

git fetch --no-tags origin "+refs/heads/stage:refs/remotes/origin/stage"
git fetch origin "refs/tags/${CANDIDATE_TAG}:refs/tags/${CANDIDATE_TAG}"
candidate_sha="$(git rev-list -n 1 "$CANDIDATE_TAG")"
expected_tag="stage-rc-${candidate_sha:0:12}"
if [[ "$CANDIDATE_TAG" != "$expected_tag" ]]; then
echo "Candidate tag suffix does not match its exact commit."
exit 1
fi
if ! git merge-base --is-ancestor "$candidate_sha" origin/stage; then
echo "Candidate commit is not part of the protected stage history."
exit 1
fi

release_json="$(gh release view "$CANDIDATE_TAG" --json isDraft,isPrerelease,tagName,targetCommitish,assets)"
node -e '
const release = JSON.parse(process.argv[1]);
const expected = process.argv[2];
if (release.isDraft || !release.isPrerelease || release.tagName !== expected) {
throw new Error("Candidate must be a published GitHub prerelease");
}
const names = release.assets.map((asset) => asset.name).sort();
const short = expected.slice("stage-rc-".length);
const required = [
`role-model-stage-${short}-linux-x64.tar.gz`,
`role-model-stage-${short}-darwin-x64.tar.gz`,
`role-model-stage-${short}-darwin-arm64.tar.gz`,
`role-model-stage-${short}-win32-x64.zip`,
"SHA256SUMS.txt",
].sort();
if (JSON.stringify(names) !== JSON.stringify(required)) {
throw new Error(`Candidate asset set mismatch: ${JSON.stringify(names)}`);
}
' "$release_json" "$CANDIDATE_TAG"

assets="$RUNNER_TEMP/release-candidate-assets"
mkdir -p "$assets"
gh release download "$CANDIDATE_TAG" --dir "$assets"
(cd "$assets" && sha256sum -c SHA256SUMS.txt)

echo "candidate_sha=$candidate_sha" >> "$GITHUB_OUTPUT"
echo "candidate_tag=$CANDIDATE_TAG" >> "$GITHUB_OUTPUT"

- name: Verify packaged stage identities
env:
CANDIDATE_SHA: ${{ steps.candidate.outputs.candidate_sha }}
CANDIDATE_TAG: ${{ steps.candidate.outputs.candidate_tag }}
shell: bash
run: |
assets="$RUNNER_TEMP/release-candidate-assets"
extracted="$RUNNER_TEMP/release-candidate-extracted"
mkdir -p "$extracted"
for archive in "$assets"/*.tar.gz "$assets"/*.zip; do
target="$(basename "$archive")"
target="${target%.tar.gz}"
target="${target%.zip}"
mkdir -p "$extracted/$target"
if [[ "$archive" == *.zip ]]; then
unzip -q "$archive" -d "$extracted/$target"
else
tar -xzf "$archive" -C "$extracted/$target"
fi
manifest="$extracted/$target/manifest.json"
test -f "$manifest"
node -e '
const manifest = require(process.argv[1]);
const candidateSha = process.argv[2];
if (
manifest.channel !== "stage" ||
manifest.name !== "role-model-stage" ||
manifest.endpoint !== "http://127.0.0.1:3457" ||
manifest.commit !== candidateSha ||
manifest.track_b_runtime?.extension_count !== 13
) {
throw new Error(`Stage manifest identity mismatch: ${process.argv[1]}`);
}
' "$manifest" "$CANDIDATE_SHA"
done

- name: Create immutable acceptance receipt
env:
CANDIDATE_SHA: ${{ steps.candidate.outputs.candidate_sha }}
CANDIDATE_TAG: ${{ steps.candidate.outputs.candidate_tag }}
shell: bash
run: |
approval_tag="rc-approved/$CANDIDATE_SHA"
remote="$(git ls-remote --tags origin "refs/tags/$approval_tag" | awk '{print $1}')"
if [[ -n "$remote" ]]; then
if [[ "$remote" != "$CANDIDATE_SHA" ]]; then
echo "Existing acceptance receipt points to a different commit."
exit 1
fi
echo "Acceptance receipt already exists for $CANDIDATE_TAG."
else
git tag "$approval_tag" "$CANDIDATE_SHA"
git push origin "refs/tags/$approval_tag"
fi
{
echo "### Accepted release candidate"
echo "- Candidate: \`$CANDIDATE_TAG\`"
echo "- Commit: \`$CANDIDATE_SHA\`"
echo "- Receipt: \`$approval_tag\`"
echo "- Approved by: \`$GITHUB_ACTOR\`"
echo "- The stable release workflow will accept only this exact stage candidate."
} >> "$GITHUB_STEP_SUMMARY"
Loading
Loading