feat(issue): add bounded GitHub issue lifecycle (#197) - #201
Draft
danielbentes wants to merge 114 commits into
Draft
danielbentes wants to merge 114 commits into
danielbentes wants to merge 114 commits into
Conversation
Parse bounded validate, doctor, run, inspect, events, resume, cancel, and exact merge requests behind an effect-free service boundary. Return generated idempotency identifiers for recoverable mutations. Refs #197
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue
Relates to #197.
Outcome
Adds a bounded
flow issuecontroller for implementing one GitHub issue in a separate repository,verifying the candidate, obtaining an independent review, publishing a draft pull request, waiting
for required hosted checks, requiring an exact merge approval, merging, and proving the post-merge
state.
The source-built controller completed this lifecycle for
digital-twinissue 6. The accepted runpublished and merged digital-twin PR 105
after an unchanged private holdout, frozen local verification, a fresh read-only review with no
P1–P3 finding, and its required hosted Linux x64 check.
Controller and authority changes
identities before model execution.
outside the model boundary.
sandbox.
effect settlements for process-boundary recovery.
set, and command set.
before every later external effect.
and current merge-gate digest.
terminal
mergedphase.Model-runtime changes
0.84.4and verify the offline catalog entry forz-ai/glm-5.3-flash.:nitro,:exacto, and:floorOpenRouter route variants only when theirbase model is known.
policyDecisionLimit. The compatibility default is 64 and the schema ceiling is128; neither value is represented as an industry standard or universal task budget.
provider error text.
execcommands only when all recoveryproofs pass. The closed model-session summary must reconcile latest-attempt
flow_execresults, excluding only host-proven pre-executionrefusals, with durable commands; process termination must be confirmed; sandbox cleanup must not have failed;
every edit must be committed; no delegation may have run; accounting must be complete; and budget
must remain. The next attempt consumes the recorded result and never replays the command.
External qualification evidence
The accepted run was
issue-ef297140-9756-4dc5-92f0-4017a4bd5f07:99fb83a14e589fe7137b6f6cf3eac97b8535be0fc54b8105ea8c79c37be1ff4280f3b9163ca4cda4test: passed on the exact candidatef52e4a0f298a5b87164f086267e242d06a649cba99b638f33a432fe9227f0064374b16b229e187004e5915942f95c296af03298fThe complete denominator contains 52 parent runs and 55 nested implementation or review runs.
Those ledgers report 247,516,376 tokens including cache tokens,
$10.094325in model cost, 9,429turns, 10,590 tool calls, and 2,532 settled filesystem effects. All failures, controller corrections,
operator interventions, limitations, and immutable digests are recorded in
docs/field-reports/digital-twin-issue-6-alpha4.md.Qualification boundary
The accepted external controller ran from built PR source on macOS. The target candidate passed its
required hosted Linux x64 check. The already-published
0.1.0-alpha.4package predatesflow issueand is not qualified by this result. A new immutable prerelease still requires exact package
qualification and separate publication authorization.
One successful issue does not establish a cross-repository success rate, production service-level
objective, or provider comparison. The field report and roadmap preserve these limits.
UC-08 correction and roadmap reassessment
Historical UC-08 verification head:
e967c29082a6647a1554fdc96312a93c6f94dd6d.flow_exec, includingexact timeouts. Reject mismatches with actionable guidance without widening command authority.
compaction request after three cumulative refusals; the already-issued tool batch settles first.
Three is a provisional policy, not an industry standard or a measured optimum. Other work and
recovery do not reset the count. Approved commands that exit nonzero are not refusals.
merge approval. Existing digest-only records remain readable. Active older issue runs must keep
their original pinned binary; no cross-version active-run migration is claimed.
comparative measurement, and missing runnable practice demonstrations in the usable-checkpoint plan.
All identified UC-08 P1–P3 findings are resolved. This incremental review does not replace the
remaining exact-head review of the complete PR.
Local verification of the reviewed UC-08 working tree:
skipped, zero failures. Coverage was not recomputed locally for UC-08.
passed. Lint retains one pre-existing informational constructor suggestion.
ephemeral archive; it does not establish retained artifact identity or hosted lifecycle proof.
received narrowly scoped, independently reviewed test watchdogs; production budgets and deadlines
are unchanged. Earlier failed/interrupted runs and an unchanged runtime startup-test timeout are
retained in
.decisions/uc08-command-discovery.md, not erased by the final passing runs.65306cdfeature/tests/usage,4ed4a64test watchdogs,e967c29roadmap/evidence.The first installed Linux attempt for
digital-twin issue 106
failed before review or PR publication: 48 of 52 exec results were frozen-command refusals.
At that checkpoint, no replacement model trial had run. Later attempts are recorded in the
current qualification status below; retain the original failed attempt in the denominator.
Keep this PR draft and unmerged until its qualification and review/check gates are complete.
Current installed qualification status
The fifth issue-106 attempt, run 34102894745,
used the approved preparation PR 112 merge and Flow source
544aebc13bfc50879de52396062a869ca975c367.Both hosted checks passed on the same retained package bytes. Exact-artifact qualification is
established for those bytes, not for a future release or changed package.
The candidate failed
candidate_holdout_failedbefore independent review or publication.The strengthened check caught false success for settings inside an inaccessible parent directory.
Independent exact-source reproduction confirmed the defect despite all 22 generated public tests passing.
No review or repair child ran, and no new candidate PR was created. Both encrypted evidence snapshots
authenticated, and all three temporary Actions secrets were removed. Existing local keys remain intact.
None of the five installed attempts completed issue-to-merge qualification. UC-01, UC-05, UC-02,
and BR-06 remain open. The current repair contract starts from a valid blocked review, not a
controller-owned verification failure. The plan tracks that recovery-design gap and missing public
test coverage. No further pilot, budget increase, candidate merge, or release is authorized by this run.
The outcome and complete attempt history are recorded in
the issue-106 field report
and the usable-checkpoint plan.
Keep this PR draft pending full exact-head review, required checks, and qualification.
Historical source verification
Exact commit:
50e5e4c5c21bd1518ff6445a8cc3f93f5a93132enpm run test:coverage: 458 files passed, 1 skipped; 6,317 tests passed, 4 skipped; 84.68%statements, 79.38% branches, 92.14% functions, and 85.27% lines.
npm run typecheck: passed.npm run build: passed.npm run format:check: passed across 931 files.npm run lint: passed with one pre-existing informational suggestion inexternal-harness-adapter.ts.npm run docs:ste,npm run docs:style, andnpm run docs:links: passed.npm run pack:check: built the archive, installed it into a clean environment, and executed theCLI successfully. Installed effective-policy SHA-256 (not an archive digest):
5dfe0fbdfa1a86627e8762bfc071594c1bccbd6a467fc3f3ea12ebddf9b053b4.git diff --check, changed-file secret scan, documentation denominator recomputation, and focused118-test recovery/compiler suite: passed.
Review checklist
controller running on hosted Linux x64.
e826687141de40da13a2a4a6eb54cf1c08dd4cc1(not met: isolation failed; other jobs running).Historical admission correction and verification
Verified historical head:
fcc97fc6251439868671acf4b0761dcd86fe268e.c99836bcompleted with dependency audit and all four proof-runtime tests passing. Quality failed one of 6,687 tests during Git admission. The retained diagnostics do not prove that the corrected race caused that historical failure.1a841beterminated with exit code 137 before producing a final report, after reporting five failures. The cause of termination remains unproven. A bounded covered diagnostic reproduced four test-watchdog timeouts and one pass. The correction uses the existing scoped 30-second watchdog policy without changing assertions or production limits. Its five selected covered behavioral tests passed, but that narrow run did not meet or replace repository-wide coverage thresholds. Both complete affected files subsequently passed all 47 tests, without skips, alongside formatting, lint, type checking, compilation, and documentation checks. Independent incremental review found no remaining P1–P3 findings. Commitee371dbcontains this correction and evidence. Earlier failures remain recorded.1a841beon September 7, 2026: 6,694 coverage tests across 468 files. Coverage reached 85.04% statements, 79.94% branches, 92.52% functions, and 85.64% lines. Two browser tests and 82 runtime tests passed. That job skipped four Lean tests assigned to the separate proof job.sha256:73559bb7a6d90c71601661ff13e82e59e1efa7ba05db22b5fb3e619f7e146a73. All three jobs in run 34111318839 completed successfully, including dependency audit. The hosted success does not erase the interrupted local run.ee371dbandfcc97fcwere pushed only after that run became terminal. They add the test correction and isolation-reuse documentation. Their production-source tree equals1a841be; qualification is still checked on the exact new head.fcc97fc: all 6,694 coverage tests across 468 files, two browser tests, and 82 runtime tests passed. Coverage reached 85.04% statements, 79.94% branches, 92.53% functions, and 85.63% lines. Documentation style, links, and prose checks were clean. Four Lean runtime tests were skipped in this quality job because they belong to the separate proof job. Dependency audit also passed.sha256:73559bb7a6d90c71601661ff13e82e59e1efa7ba05db22b5fb3e619f7e146a73. All three jobs in run 34117070990 completed successfully at that exact historical head on September 7, 2026. This closed CI verification at that head, not installed issue-to-merge qualification, general verifier isolation, or full PR review.Keep this PR draft and unmerged. No new pilot, candidate merge, or release was authorized by these verification results.
Historical hosted Linux isolation prerequisite qualification
Qualified prerequisite head:
fd8cf95dd6af3d910f120308fa1ab97930f7c472.verifier-isolationjob. It uses pinned actions and Node, no persisted checkout credentials, read-only repository permission, and the production native sandbox.6.17.0-1022-azure, Node 26.7.0, and bubblewrap 0.9.0. Tests assert SRT 0.0.70. This is one passing prerequisite run, not complete behavioral-observer qualification or repair enablement.55023ba6a29fda99f951473b0d6f57e9d9912d90, not a direct checkout of the PR head. Independent commit API reads confirm both commits have source tree79ef26b968d60d564ce8ee117be0c94a3a84e349. These results do not qualify later local commits.Keep this PR draft and unmerged. No new live model pilot, retained-candidate modification, merge, or release is authorized by this qualification slice.
Current internal observer qualification slice
Current head:
e826687141de40da13a2a4a6eb54cf1c08dd4cc1.listen EPERM, a direct listener control confirmed the permission boundary, and the identical lifecycle case passed with host permission. The complete one-worker, non-live suite is now rerunning with that permission; no complete new local suite result is claimed yet.Keep this PR draft and unmerged. No new live pilot, retained-candidate modification, merge, or release is authorized by this slice.
The expanded run checked out synthetic merge
3d934d6f03d259351d671fabfe93093fac5c469f, whose tree12cb8436b4e575786df9f479aed0addfbc25545dequals the PR head's tree. Source review suggests namespaced DAC-bypass capabilities explain the denied-file read; runtime capability confirmation is still pending. An application-result protocol alone does not resolve this fixture-access gap. No stronger sandbox policy has been selected or enabled.