You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ba8294d
Browse filesBrowse the repository at this point in the historyBrowse files
F6c: run every T9 suite in CI and add the live probe workflow (#177)
* Run real-docker on every pull request and pin CI's Docker excludes
Remove the Agent isolation workflow's path filter and run it on pushes to
the same branches as CI, so `real-docker` can be a required check: a
required check that a path filter skips never reports.
Stop excluding test/agent-adapter.test.ts from the CI `test` job. It has
never started Docker or a vendor CLI: since D4 (#47) its cases test pure
parsers and budgets or refuse before anything is allocated, and it passes
with no Docker binary on PATH. It was never on vitest.config.ts's Docker
list. The excludes now equal that list, and a test fails if they differ
or if real-docker gains a path filter.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Add a nightly and manual Live probes workflow for the Claude startup probes
The workflow runs on workflow_dispatch and a nightly schedule, never on a
pull request or push, so it is not a required check. It reads the repository
secret CLAUDE_CODE_OAUTH_TOKEN and fails at once when the secret is empty.
It runs only the four live Claude probes, selected by a shared
"(live Claude)" title suffix, through the docker Vitest project so the files
run one at a time. Vitest exits 0 when it skips every test, so
scripts/live-probes.ts then checks the JSON report: every listed probe must
pass and no other test may run. Tests pin the triggers, the command, the
secret guard, the probe list against the test files, and the report check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Document the CI workflows, required checks and what remains for T9
Add docs/implementation/ci.md: which workflow and job runs which tests on
which triggers, the required checks and secret a repository administrator
must set, the live probe job, and how to record the planning fixtures
again. Link it from the README, agent isolation and planning acceptance,
and update the T9 status in the plan. T9 stays unticked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Size the Live probes timeout from the probes' own limits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Check every test the live probe switch enables, and correct the build-time note
The probe-name check now finds every test inside a CODEBOOST_RUN_AUTH_PROBES gate and requires the
"(live Claude)" suffix and a LIVE_PROBES entry, so an unsuffixed gated test cannot be silently skipped by
the workflow's -t filter. Unrecognized gate forms fail the check. The workflow comment now says only
agent-container and agent-supervisor build the image in beforeAll (53 min of limits, under 75).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Pin live probe full names and the CI test command
Parse each live probe file with the Vite (oxc) parser instead of counting
braces. The probe switch may only gate an if block of tests and call-free
declarations, or it.runIf; the gated tests must match LIVE_PROBES by
Vitest full name. The CI test job's npm test command may hold only
--exclude <file> pairs after --.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Declare vite and close probe-switch gaps in the CI config test
Declare vite 8.3.0 as a direct dev dependency, since the test imports
parseSync from it. Count every textual occurrence of the probe switch in
each probe file and require each to be a recognized gate; treat a
template literal without expressions as a mention. Scan every .ts file
under test/, not only *.test.ts, for the switch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Refuse skipped or soft-failing gate jobs and dead probe gates
Assert that the required test and real-docker jobs and the live-probes job
carry no if or continue-on-error at job or step level. Count a probe switch
gate only at module load or in a describe callback. Scan every JS/TS source
extension under test/ for the switch. Document the 60-day schedule disable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Refuse unmodelled describes around probes and pin the required check jobs
- Throw when a describe around a gated probe has a non-literal title or a
modifier such as .each or .for, instead of computing a wrong full name.
- Derive the live probe -t filter and the suffix checks from
LIVE_PROBE_MARKER.
- Pin the test and real-docker jobs: one job per workflow, keys runs-on,
timeout-minutes and steps only (no name, no matrix), exact steps.
- Give the CI test job a 45 min timeout (longest recent run: 20 min) and
check that all three workflows use the same Node version.
- Document that renaming either required job breaks the required checks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Pin workflow keys and live-probes steps; reject nested probe gates
- Allow-list each workflow's top-level keys and the live-probes job keys,
and pin the live-probes steps exactly.
- Accept a probe gate only as a statement directly in the module body or
in a describe callback body, not inside another if, block or expression.
- Docs: say "variable declarations", list the pinned steps of each job.
- live-probes.yml: include the teardown hooks in the timeout arithmetic.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Tighten gated-block declarations, pin the token step and correct the teardown comment
- A gated if block may declare only const or let names with a function
expression or a constant value; a var or an assignment such as
(on = true) now fails the config test.
- Pin the live-probes token step's run text exactly.
- Say the teardown figures are Vitest's limits, that the afterAll docker
calls have no timeout of their own, and that the job limit caps the run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Pin the Vitest projects exactly and refuse option objects and computed titles in probe files
The scheduling test now compares the whole Vitest config, so an extra key
such as an exclude fails it. Gated tests and the describes around them must
take exactly a literal title, a function and an optional timeout. Every
it/test/describe title in a probe file must be a literal, so the marker
check sees each one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Refuse probe-file test calls that reach it/test/describe through unmodeled links
A call such as it.each`table`('title', fn) has a tagged template in its callee
chain, so the title check skipped it. suiteCall now throws when the chain reaches
it, test or describe through a tagged template, computed member, parentheses or
a TypeScript wrapper. it.each([...])(title, fn) stays modeled with the literal
title check. The comment and ci.md now state exactly what is enforced.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Pin the package scripts both gating jobs call
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Refuse test.only in browser specs and pin the Playwright config
Set forbidOnly: true in playwright.config.ts and pin the whole config in
test/vitest-config.test.ts, so a committed .only, a grep or a narrower
testDir fails the test job. In ci.md, state that only top-level
test/*.test.ts files run, and that the static probe-title check does not
see a marker added by a .each/.for placeholder (the live-probes report
check refuses that test).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ npm run typecheck
14
14
npm test
15
15
```
16
16
17
-
Tests create disposable local repositories and exercise command checks in disposable credential-free containers. They do not invoke model providers or access GitHub.
17
+
Tests create disposable local repositories and exercise command checks in disposable credential-free containers. They do not invoke model providers or access GitHub.[CI](docs/implementation/ci.md) lists the workflows, the required checks and the live Claude probes.
Copy file name to clipboardExpand all lines: docs/designs/codeboost-plan-indexed-review.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1922,7 +1922,7 @@ Read each row left to right: finish and validate step 1 before step 2 within tha
1922
1922
| C — guarded merge gate | **C1.** Required-check and branch-rule reads (T12). **C2.** Snapshot/evidence blockers, with unavailable T6 execution evidence blocking merge. **C3.** Head-pinned, base-protected merge and refusal handling (T7). **C4.** Review UI, race regressions and final #21 / PR #23 review. | Before C1, record B0 evidence for the foundation contracts C consumes; existing work must supply that evidence before C4 completion. Continue existing work rather than restarting implemented steps. Release shared runner/UI files after C4 merges. |
1923
1923
| D — agent isolation | **D1.** Invocation contract and isolated task clone (T1). **D2.** Pinned, restricted container and startup self-test (T1). **D3.** Vendor-only egress and phase/tool enforcement (T2). **D4.** Claude/Codex adapters, cancellation settlement and bounded output. **D5.** Full real-Docker and hostile-input gate for this boundary (T9). | Can run alongside C and E. F requires D5 merged; G's production invocation requires D5. Add regressions with each step; D5 integrates them rather than postponing testing. |
1924
1924
| E — planning logic | **E1.** Audit existing T18 schema/parser/prompt behavior and remaining #6 gaps. **E2.** Read-only authoring-provider contract and safe prompt/response handling. **E3.** Identity/revision-bound suggestion orchestration using the existing store interface. **E4.** Import, replay, malformed-response and hostile-input acceptance fixtures (T18). | Can run alongside C and D with injected providers. G consumes E4; live invocation waits for D5. Shared schema/store fixes must go through the assigned integration owner. |
1925
-
| F — runner and pre-merge automation | **F1.** Before implementation, publish and review the lifecycle/state-holder contract: pending, running, completed, failed, cancelled, stale and closing; legal transitions; ownership and settlement for persisted records, in-memory jobs, subprocesses, admitted HTTP requests and rendered UI; guarded retry; reject-admission → drain requests → cancel/await jobs → close storage. Then implement it and the feedback-event contract under the AGENTS.md async rules. **F2.** Per-item execution, review/reject rounds, pre-PR already-fixed checks, PR opening and hostile-issue eval (build step 5; T9). **F3.** Trusted rebase and ledger mapping (remaining T3). **F4.** Foreign-commit conflict handling (T11). **F5.** Post-rebase attribution/approval refresh and head-bound command execution (T6). **F6.** Required-check refresh, already-fixed check, guarded merge handoff and #22 integration regressions. F owns common CI after C: integrate every T9 suite (Docker, adapter, hostile-input/issue, recorded-output, unit and browser) into required CI, coordinating D's dedicated workflow. T9 remains incomplete until the combined head demonstrably runs and passes every suite. | Starts after C4 and D5 merge and B0 evidence is handed off for F's consumed contracts. Recheck that evidence against merged main before F1; existing T4/T5/T10 behavior is reused rather than rebuilt. F1 owns planning persistence/API additions needed by G. F2's working reject loop supplies the learning dependency. Ask already uses D's invocation contract (`runner/question-container.ts`), so F reuses that path rather than adding a second one. |
1925
+
| F — runner and pre-merge automation | **F1.** Before implementation, publish and review the lifecycle/state-holder contract: pending, running, completed, failed, cancelled, stale and closing; legal transitions; ownership and settlement for persisted records, in-memory jobs, subprocesses, admitted HTTP requests and rendered UI; guarded retry; reject-admission → drain requests → cancel/await jobs → close storage. Then implement it and the feedback-event contract under the AGENTS.md async rules. **F2.** Per-item execution, review/reject rounds, pre-PR already-fixed checks, PR opening and hostile-issue eval (build step 5; T9). **F3.** Trusted rebase and ledger mapping (remaining T3). **F4.** Foreign-commit conflict handling (T11). **F5.** Post-rebase attribution/approval refresh and head-bound command execution (T6). **F6.** Required-check refresh, already-fixed check, guarded merge handoff and #22 integration regressions. F owns common CI after C: integrate every T9 suite (Docker, adapter, hostile-input/issue, recorded-output, unit and browser) into required CI, coordinating D's dedicated workflow. T9 remains incomplete until the combined head demonstrably runs and passes every suite. *F6c status:* the workflows are in place (`docs/implementation/ci.md`); required-check settings, a passing run of both required jobs on one head and a green `Live probes` run remain. | Starts after C4 and D5 merge and B0 evidence is handed off for F's consumed contracts. Recheck that evidence against merged main before F1; existing T4/T5/T10 behavior is reused rather than rebuilt. F1 owns planning persistence/API additions needed by G. F2's working reject loop supplies the learning dependency. Ask already uses D's invocation contract (`runner/question-container.ts`), so F reuses that path rather than adding a second one. |
1926
1926
| G — planning screen | **G1.** Import and plan display UI. **G2.** Authoring and suggestion cards. **G3.** Revision-bound Apply and draft/attachment preservation. **G4.** Real provider/store integration and complete T18 browser/adapter acceptance. | G1 starts after E4 and C4 merge; G1–G3 may use fixtures. G4 waits for D5 and F1's production planning API/persistence contract. Release shared web files after G4. |
1927
1927
| H — issue prioritization | **H1.** Decide and record ranking policy. **H2.** Issue retrieval/normalization. **H3.** Deterministic ranking with reasons and failure/stale states. **H4.** Issue-list UI and end-to-end checks (build step 8). | H1–H3 can run alongside F/G after the issue-access contract is inspected. H4 waits for G4 to release shared web files. No existing T-ID covers this entire milestone. |
1928
1928
| I — queue, schedule and recovery | **I1.** Queue admission and persisted transitions. **I2.** Run-window scheduling and cancellation. **I3.** Restart recovery, stale attempts and shutdown draining. **I4.** UI integration and controlled race acceptance (build step 7). | Starts after F6; owns shared runner/store files. UI work waits for G/H to release its exact files. No existing T-ID covers this entire milestone. |
@@ -1981,7 +1981,7 @@ F, G and H ran together within these ownership boundaries. G and H are done; for
1981
1981
1982
1982
Built from this review's findings. Each task comes from a specific decision above. Run with Claude Code or Codex, and tick each one as you ship it. Effort ratios assumed: features about 30x, tests about 50x, architecture about 5x.
1983
1983
1984
-
**Status (checked against `main` on 2026-09-26, lane B0).** T1, T2, T4, T5, T10, T13 and T14 meet their Verify lines and are ticked, with evidence under each (T1, T2 and T14 re-checked 2026-09-26 after lane D merged). T9 stays open until lane F6 runs every suite in required CI. Ask calls the `agents/` boundary from `runner/question-container.ts`; it has no host adapter. The planned files `core/segments`, `core/choices` and `core/attribution` were never created. That logic lives in `core/linking.ts` (segments and ledger attribution) and `core/approvals.ts` (approvals and duplicate-segment choices). The Files lines below now name the real files.
1984
+
**Status (checked against `main` on 2026-09-26, lane B0).** T1, T2, T4, T5, T10, T13 and T14 meet their Verify lines and are ticked, with evidence under each (T1, T2 and T14 re-checked 2026-09-26 after lane D merged). T9 stays open. Lane F6 (common CI) has added the workflows in `docs/implementation/ci.md`: `test` and `real-docker` run on every pull request with no path filter, and `Live probes` runs the live Claude probes nightly and by hand. T9 can be ticked when a repository administrator requires `test` and `real-docker` on `main`, both pass on the same head, and a `Live probes` run passes with the `CLAUDE_CODE_OAUTH_TOKEN` secret. Ask calls the `agents/` boundary from `runner/question-container.ts`; it has no host adapter. The planned files `core/segments`, `core/choices` and `core/attribution` were never created. That logic lives in `core/linking.ts` (segments and ledger attribution) and `core/approvals.ts` (approvals and duplicate-segment choices). The Files lines below now name the real files.
1985
1985
1986
1986
These `T` IDs are requirement identifiers, not the build-order numbers. Current merge-gate work is **build step 4, increment 1 (#21)** and spans parts of T6, T7, and T12; it is unrelated to the numbering of T4. See “Build step 4: scope and progress” for the current increment and remaining milestone criteria. An increment must not mark a broader requirement complete while any of its acceptance criteria remain deferred.
0 commit comments