diff --git a/.forge/README.md b/.forge/README.md index 51168eed8..55cc6c500 100644 --- a/.forge/README.md +++ b/.forge/README.md @@ -1,36 +1,61 @@ -# Numinous Forge on this fork +# Numinous Forge on Darkbloom -This fork demonstrates issue repair, prompted engineering work, and pull-request verification on isolated AWS workers. Upstream: [Layr-Labs/d-inference](https://github.com/Layr-Labs/d-inference). +Forge takes an issue, a requested change, or a pull request through isolated execution and verification. This fork shows the resulting code and the evidence behind it. [Upstream Darkbloom](https://github.com/Layr-Labs/d-inference) and its production systems are unchanged. + +| Work | Result to inspect | +|---|---| +| Maintain: repair reconnect reputation | [PR #4](https://github.com/numinous-technology/d-inference/pull/4), [regression proof](evidence/issue-regression-proof.json), [task history](evidence/issue-task.json) | +| Repair CI findings: remove streaming lock dependency | [PR #5](https://github.com/numinous-technology/d-inference/pull/5), [regression proof](evidence/streaming-regression-proof.json), [task history](evidence/streaming-task.json) | +| Build: add protocol fuzz coverage | [PR #2](https://github.com/numinous-technology/d-inference/pull/2), [task history](evidence/prompted-task.json) | +| Review: reject broken code | [Closed PR #1](https://github.com/numinous-technology/d-inference/pull/1), [failing CI evidence](evidence/rejected-ci-task.json) | +| Stabilize verification: repair asynchronous test fixtures | [PR #6](https://github.com/numinous-technology/d-inference/pull/6), [before/after proof](evidence/fixture-regression-proof.json), [PR CI](evidence/fixture-ci-task.json) | +| Repeat: run a scheduled check | [Verified occurrence](evidence/scheduled-task.json), [both policy-bound occurrences](evidence/schedule-promotion.json); schedule paused after verification | ```mermaid -flowchart LR - People[Maintainers and contributors] --> Work[Issue or requested change] - Work --> Agent[Pi implementation worker] - Agent --> Checks[Fresh verification workers] - PR[Contributor PR] --> Checks - Checks --> Evidence[Tests, patch, source identity and run history] - Evidence --> Review[Human review and merge] - Review --> Learn[Reviewed updates to skills and checks] - Learn --> Agent - Learn --> Checks +flowchart TB + People[Maintainers and contributors] --> Request[Issue or requested improvement] + People --> PR[Pull request] + Clock[Configured schedule] --> Checks + Request --> Work[Pi implementation worker] + Work --> Checks[Fresh verification workers] + PR --> Checks + Checks --> Evidence[Tests, patch, source identity and task history] + Evidence --> Review[Maintainer review] + Review --> Feedback[Recorded feedback and revision] + Feedback --> Work + Review --> Merge[Merge and release decisions] + Review --> Policy[Reviewed skills and check updates] + Policy --> Work + Policy --> Checks ``` -Forge runs the accepted verification policy on fresh EC2 workers. GitHub Actions only submits the commit and reports the outcome; candidate code receives no GitHub or AWS credentials. The verification status belongs to the tested PR commit. Changes to verification policy are promoted by the Forge operator and affect future tasks; existing task evidence retains its original policy. +Maintainers choose scope, resolve behavior questions, and review merges and releases. Contributors bring issues, improvements, and PRs. Forge implements scoped work, runs accepted checks, records attempts, and cleans up workers. Agent output is a candidate until separate verification passes. + +The repair demonstrates review as part of the process: the first candidate passed its initial tests but review found a history-selection flaw. Recorded feedback led to a revised candidate and additional tests against memory and real PostgreSQL. Those lessons become versioned checks and skills for future tasks; existing tasks retain their original policy. + +CI also exposed a separate pre-existing streaming lock dependency. We retained the failed CI result, reproduced the lock ordering, and submitted a focused repair through the prompted-work lane. When the fork advanced during that task, an explicit continuation carried its reviewed patch and feedback onto the new source; [the superseded task](evidence/streaming-superseded-task.json) remains recorded. A later implementation timed out before exporting its candidate; [the recovery record](evidence/streaming-recovery.json) identifies the successful edits reconstructed from its retained transcript and the new task that verifies them. The platform now preserves unfinished patches on agent deadlines, with a deployed timeout regression in its qualification. CI does not automatically rewrite arbitrary failed PRs; an operator scopes the repair. + +## Review the checks and agent instructions -The demo covers Linux coordinator/protocol checks, regression repair, and durable scheduling. Native Apple Silicon, browser, and Rust-specific coverage are explicitly unsupported in the current policy and block affected PRs. A green result does not mean that those unsupported environments were tested. Inherited upstream workflows are disabled in this fork; deployment and release permissions remain with upstream maintainers. +The [accepted policy snapshot](policy/darkbloom.json) lists profiles and required checks. [Engineering instructions](policy/skills/engineering.md) and [reputation instructions](policy/skills/reputation.md) carry reviewed lessons into future tasks. Their [manifest](policy/manifest.json) binds the files to the qualified deployment. Changes can be proposed in this fork; Numinous reviews and deploys them before they affect future work. A candidate PR cannot replace its own accepted checks. -## Operator entry points +## Inspect the evidence + +[Infrastructure qualification](evidence/qualification.json) records the tested build and deployment scope. [Qualification history](evidence/qualification-attempts.json) retains failed attempts and their corrections. [Repair PR CI](evidence/issue-ci-task.json) and [prompted PR CI](evidence/prompted-ci-task.json) record verification of each PR's merge with the target branch. + +With operator access to the installed CLI: ```sh -forge issue solve https://github.com/Layr-Labs/d-inference/issues/747 --profile reputation --reproduction-check reconnect -forge work submit --prompt-file request.md --profile protocol -forge task list -forge task watch TASK_ID -forge task export TASK_ID ./evidence -forge task publish TASK_ID -forge schedule list +numinous-forge task list +numinous-forge task get 66257843079c685ec7a310c33395c780 +numinous-forge task export 66257843079c685ec7a310c33395c780 ./repair-evidence +numinous-forge schedule runs qualification-protocol ``` -Issue tasks must first demonstrate their accepted regression test failing. Agent output then goes through fresh verification. Publication checks the candidate tree against the verified tree and opens a draft PR in this fork. Human review decides whether it should merge or be proposed upstream. +Public receipts omit credentials and private infrastructure details. Operator exports contain the complete input, review notes, attempts, logs, and artifact manifests. The platform source is [Numinous Forge](https://github.com/numinous-technology/numinous-forge), currently private. + +## Deployment boundary + +This deployment covers one project and two concurrent Linux workers. Native Mac/provider, Rust sidecar, and browser-specific coverage are unavailable and block affected CI work. Slack is not installed. Schedules use explicitly pinned commits. The controller is a single instance; durable state and evidence live in Aurora and S3. -The platform is maintained in [Numinous Forge](https://github.com/numinous-technology/numinous-forge). The platform repository is currently private; this fork's CI results and repair PRs are public evidence. +GitHub Actions submits work through a restricted AWS OIDC role; candidate code receives no GitHub or AWS account credentials. Verification uses accepted policy and the pinned PR merge. Inherited upstream deployment and release workflows are disabled in this fork. This demonstration does not claim that all upstream issues are fixed or that unsupported environments were tested. diff --git a/.forge/evidence/fixture-ci-task.json b/.forge/evidence/fixture-ci-task.json new file mode 100644 index 000000000..73f95f04c --- /dev/null +++ b/.forge/evidence/fixture-ci-task.json @@ -0,0 +1,99 @@ +{ + "id": "2f545a2d315f36b1532dffa3fce35976", + "lane": "ci", + "state": "verified", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-06T01:54:37.074538617Z", + "updated_at": "2026-09-06T02:06:38.03952068Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9a2a01b34c226873ff46bd1aff1633793f6337e2" + }, + "verified_tree": "51806b699c11cb766fd004a7ca5a97631d19a172", + "verification_run_ids": [ + "adc4073a8a7c57e34c93cb1805a96163", + "6a4911e76767402cbc924b0865089b75", + "1afc01f1726c1bbd2ae1a276314ddd05" + ], + "base_sha": "bb28702624322b07e189aa7cb532cd068881b665", + "pr_number": 6, + "verification_source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "a52f1c2ba5cd382766ad0c716db8d4f1f12689fc" + }, + "runs": [ + { + "id": "adc4073a8a7c57e34c93cb1805a96163", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "tree_after_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "input_sha256": "fd80c88e0c0457eca572288264eda3413379eeb17bf27d72f78819556796d34f", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 15.452413558959961, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "a52f1c2ba5cd382766ad0c716db8d4f1f12689fc" + }, + "result_sha256": "a8569eb4dec93c7e17e2f070cda3e90830126dbc96b83d6544b1d4fa6c6bbdff", + "result_collected": true + }, + { + "id": "6a4911e76767402cbc924b0865089b75", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "tree_after_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "input_sha256": "48bd71f3c60258d15d6242b856f2bd06d709be79a57b74fe3c49e28fe53f599a", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 3.9318313598632812, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "a52f1c2ba5cd382766ad0c716db8d4f1f12689fc" + }, + "result_sha256": "093ebc5158b594e43b9018631d8161c5cfc4591899c5755d74779205cd93ae55", + "result_collected": true + }, + { + "id": "1afc01f1726c1bbd2ae1a276314ddd05", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "tree_after_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "input_sha256": "c9d4c3360782d1d0b2bd62b5146a010e818e080bb0831ecf5784ad2278e77062", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4831, + "elapsed_seconds": 264.5525097846985, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "a52f1c2ba5cd382766ad0c716db8d4f1f12689fc" + }, + "result_sha256": "e9fe45fe70d76184cd69be6b0670bb2bf9901d8c460a4619ab2e22b7b5a519b9", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 6, + "distinct_worker_count": 3, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/fixture-regression-proof.json b/.forge/evidence/fixture-regression-proof.json new file mode 100644 index 000000000..2c8f7af63 --- /dev/null +++ b/.forge/evidence/fixture-regression-proof.json @@ -0,0 +1,40 @@ +{ + "base": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "patch_sha256": "95aa9db513bed66fd4873229a69dde4fb690b8b009ea379f10ed76af1b4e330a", + "patch_bytes": 4333, + "files": [ + "coordinator/api/failover_integration_test.go", + "coordinator/api/me_delete_test.go" + ], + "production_files_changed": false, + "baseline_focused_exit_code": 1, + "baseline_delete_failures_of_20": 6, + "fixed_focused_exit_code": 0, + "negative_cleanup_exit_code": 1, + "commands": [ + { + "command": "go test -race -json ./coordinator/api -run '^(TestDeleteMyProvider_OnlineConflict409|TestServiceReasoningPolicyTracksAliasCapacityFallback|TestRecoverMiddlewareCatchesPanic)$' -count=20", + "target": "unchanged base", + "log": "base-focused.jsonl", + "exit_code": 1 + }, + { + "command": "go test -race -json ./coordinator/api -run '^TestFailoverProviderCleanupJoinsActiveScript$' -count=1", + "target": "unchanged base plus new regression only", + "log": "base-cleanup-regression.jsonl", + "exit_code": 1 + }, + { + "command": "go test -race -json ./coordinator/api -run '^(TestDeleteMyProvider_OnlineConflict409|TestServiceReasoningPolicyTracksAliasCapacityFallback|TestRecoverMiddlewareCatchesPanic|TestFailoverProviderCleanupJoinsActiveScript)$' -count=20", + "target": "fixed test fixtures", + "log": "fixed-focused.jsonl", + "exit_code": 0 + } + ], + "fixed_race_repetitions": 20, + "evidence_sha256": { + "base-focused.jsonl": "bdea574c862c8309a04d4c025d033120f0234a0bbe1c51dd666d5148d3c832ed", + "base-cleanup-regression.jsonl": "e5b2b2079a2cb6769a8b5efe3a75b877bbacdf669b2c4f7f70498b4f0e1b28ab", + "fixed-focused.jsonl": "bc2ae27e86937f1d3fbfc2d478ab1835b0c500b84c09b11740dff073dc4cfec0" + } +} diff --git a/.forge/evidence/issue-ci-task.json b/.forge/evidence/issue-ci-task.json new file mode 100644 index 000000000..822d8c0f4 --- /dev/null +++ b/.forge/evidence/issue-ci-task.json @@ -0,0 +1,99 @@ +{ + "id": "2024d2136b28a2ffd56d89ead9ac74ff", + "lane": "ci", + "state": "verified", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-06T00:17:30.04642831Z", + "updated_at": "2026-09-06T00:30:34.710979635Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "c5bdd4230bebc58615b4160d5939e94033c5f358" + }, + "verified_tree": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "verification_run_ids": [ + "3394e6d9d5a585fabb9961ce3bb765a6", + "b75a0684e375a8451eba29e3af76cca9", + "557f24e5a1f0bc38468f78e48289335a" + ], + "base_sha": "ab9e8aa7a9143a7864349618fbdcae94094c93a6", + "pr_number": 4, + "verification_source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "runs": [ + { + "id": "3394e6d9d5a585fabb9961ce3bb765a6", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "tree_after_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "input_sha256": "4c2cdedd7cd26fd15012866058945494b1a2954b28fe9b2b13823637e9ad92e8", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 16.655038833618164, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "result_sha256": "b5bc4907524447e9fec85a39959b4b561ad6064c040d45fd5be62f33820d045f", + "result_collected": true + }, + { + "id": "b75a0684e375a8451eba29e3af76cca9", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "tree_after_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "input_sha256": "9deb32315570d7a1035cf461efe857a7856bbb332dc7bb4fd0efcba7939650e9", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.1011528968811035, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "result_sha256": "fde8dcda571f609cb298d688b82b4a8c2f2f79aa3945022f71d1fc5d5eae70fe", + "result_collected": true + }, + { + "id": "557f24e5a1f0bc38468f78e48289335a", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "tree_after_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "input_sha256": "f6c9851a1424fae0c870db78d900bec5fa7fb68979519d21bee707cea93a58ff", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4817, + "elapsed_seconds": 282.5478456020355, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "result_sha256": "a3725e4f09257d34a7d96ee234b8bdf95cea0fedae422584e978d96ab1949843", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 6, + "distinct_worker_count": 3, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/issue-first-ci-task.json b/.forge/evidence/issue-first-ci-task.json new file mode 100644 index 000000000..cc652594f --- /dev/null +++ b/.forge/evidence/issue-first-ci-task.json @@ -0,0 +1,95 @@ +{ + "id": "1d085cf27b0e152d63bd5620f74dd9e1", + "lane": "ci", + "state": "blocked", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-05T23:58:59.253913301Z", + "updated_at": "2026-09-06T00:11:15.196402153Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "c5bdd4230bebc58615b4160d5939e94033c5f358" + }, + "base_sha": "ab9e8aa7a9143a7864349618fbdcae94094c93a6", + "pr_number": 4, + "verification_source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "runs": [ + { + "id": "84a324a28ad95c9e1644db1253f2fe81", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "tree_after_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "input_sha256": "15bc64e23de665713f8e64365c62e6de37f2b75ea5734473b12103d4dd9ba02e", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 15.624031066894531, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "result_sha256": "62a1b6603a30e122c207148539642f9143a61673dd53ce679077e274b3e43680", + "result_collected": true + }, + { + "id": "e01b7fff18520fa0b47dbea09785d0a9", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "tree_after_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "input_sha256": "2ea46dd9b1006fce49e600fbe30b9d2e7c979e65f01cb33d8b3a0d440415c4f2", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.035728693008423, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "result_sha256": "ba080a732a8f9da06e582d5a12c0888704b401cf767d91a232a263a42eafb947", + "result_collected": true + }, + { + "id": "52d52b54403b8dba9fdeb5078541277d", + "stage": "verify", + "attempt": 1, + "run_state": "failed", + "check": "coordinator", + "outcome": "failed", + "exit_code": 1, + "tree_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "tree_after_sha": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "input_sha256": "4132f3cd167fc67acc90021ba87e08fffa07fd186e3662591589551e994c221e", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4817, + "elapsed_seconds": 271.31515526771545, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "result_sha256": "dd1cdd0d99b56a64c8b1bfc212367dd1f7dc1f1b3187329a98a1240820611fa5", + "result_collected": true, + "failed_tests": [ + "github.com/eigeninference/d-inference/coordinator/api::TestFirstByteReachesClientWhileRegistryWriteLockHeld" + ] + } + ], + "notes_recorded": 0, + "events_recorded": 6, + "distinct_worker_count": 3 +} diff --git a/.forge/evidence/issue-regression-proof.json b/.forge/evidence/issue-regression-proof.json new file mode 100644 index 000000000..097cc5151 --- /dev/null +++ b/.forge/evidence/issue-regression-proof.json @@ -0,0 +1,18 @@ +{ + "task": "66257843079c685ec7a310c33395c780", + "run": "99250d1942a1c89a834647def5c64341", + "candidate_sha256": "d371dc48b9c8cdfcbdfd3fe2748e484def4d2680dc54411190f6756181a19fac", + "verified_tree": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "required_passed": [ + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/memory", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/postgres", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/memory", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/postgres", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/memory", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/postgres", + "github.com/eigeninference/d-inference/coordinator/store::TestGetProviderBySEKeyReturnsDeepCopy", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresMetadataAndReputationIndependently" + ], + "command_sha256": "3d582db8ee68d678417b7145ba0cab2d06b423261626b3555a398aba4ba8ef7e", + "review": "First candidate revised after independent donor-selection and aliasing review; revised exact-method harness passed." +} diff --git a/.forge/evidence/issue-task.json b/.forge/evidence/issue-task.json new file mode 100644 index 000000000..e2dc00e65 --- /dev/null +++ b/.forge/evidence/issue-task.json @@ -0,0 +1,232 @@ +{ + "id": "66257843079c685ec7a310c33395c780", + "lane": "issue", + "state": "published", + "policy_digest": "6e7f097750c960348238b82c6517482d1698c8bb0785146572e36cae2ea127b8", + "created_at": "2026-09-05T22:37:22.999264869Z", + "updated_at": "2026-09-05T23:58:44.153890108Z", + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "verified_tree": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "verification_run_ids": [ + "e91b2033757f947a1bada3f051595966", + "99250d1942a1c89a834647def5c64341", + "88768ed2c0a93307867b7b43f9e5492e" + ], + "publication": { + "repository": "numinous-technology/d-inference", + "branch": "forge/task-66257843079c685ec7a310c33395c780", + "commit": "c5bdd4230bebc58615b4160d5939e94033c5f358", + "pr_number": 4 + }, + "runs": [ + { + "id": "f1286ab874e40ea0d37c9c6130460b0d", + "stage": "reproduce", + "attempt": 1, + "run_state": "failed", + "check": "reconnect", + "outcome": "failed", + "exit_code": 1, + "tree_sha": "def6c41e52e2fb06b8d528530f2f5849b59672cb", + "tree_after_sha": "def6c41e52e2fb06b8d528530f2f5849b59672cb", + "input_sha256": "1d7eb0e7d6c4a87231f23c47246556b8a9851cfc705b18e4d9de475f363b61fb", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup": "fail", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectDoesNotRestoreAnotherSEKey": "fail" + }, + "tests_completed": 4, + "elapsed_seconds": 61.116623640060425, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "754c06bcfb864ee370130f16bde9ae813f6931ea4da36a9247b585575fefd6f9", + "result_collected": true, + "failed_tests": [ + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectDoesNotRestoreAnotherSEKey", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup/with_serial", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup/without_serial" + ] + }, + { + "id": "2950efba148b4289601d960b702aa478", + "stage": "implement", + "attempt": 1, + "run_state": "succeeded", + "outcome": "candidate", + "tree_sha": "def6c41e52e2fb06b8d528530f2f5849b59672cb", + "input_sha256": "aa1f82b4dd7e07dc56e10b63469e9779ba0f1df8b41fc74c6c93b73af36dd864", + "elapsed_seconds": 948.3264977931976, + "model": "claude-opus-4-8", + "tool_executions": 56, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "9f8549accdbcc812b98e9e4307f671c02aab83dea04d394eadc2cdd91a75c529", + "result_collected": true + }, + { + "id": "07165f433fa1d14ca3794667bd12a751", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "reconnect", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "tree_after_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "input_sha256": "0732a6165aa22057a5760dd1d96fc9eefb469cd7b5c2a932c59a91942bd97fd0", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectDoesNotRestoreAnotherSEKey": "pass" + }, + "tests_completed": 4, + "elapsed_seconds": 54.579750776290894, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "70990342a8267b91e73068ac54a985c28966175c38b8818c9e6008f409fe125b", + "result_collected": true + }, + { + "id": "a9f7b0883a318afe072b4f331fdee8b3", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "tree_after_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "input_sha256": "10effc5587f45a6e533dc6f52b7b49cf6a1b392ab7078a680ac0e92d03a73d6e", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 3992, + "elapsed_seconds": 268.6709249019623, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "9ac3dc7de29fc2632765696817d24ec07a44d094fb4aa00e6d89e0af8ece1a34", + "result_collected": true + }, + { + "id": "93d8cb64b25ad6da6f602eba84ae9c7f", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "tree_after_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "input_sha256": "1bc27795eca30aff6689e83aa52928fe413094e76fe7febc15dc0b472d00d3c9", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.031873941421509, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "0e0afd3090973fc965be1f1fdc30f2c434251be08a252f4f5fb783230e96c4cb", + "result_collected": true + }, + { + "id": "e22dde1284bf60b5d60f747ddebcb6fa", + "stage": "implement", + "attempt": 2, + "run_state": "succeeded", + "outcome": "candidate", + "tree_sha": "622f07b30b409bbad1be4b723f66a527407f55a9", + "input_sha256": "45dbdfa628dda76b835db0dde13d2acbc964f2ec7ed1ef6edede6bb81ad087f1", + "elapsed_seconds": 1043.1946561336517, + "model": "claude-opus-4-8", + "tool_executions": 72, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "a005f45b3f7ec7448a77dabddbfe394ea9594f4a29ebede6e43f8b7581d1c7d7", + "result_collected": true + }, + { + "id": "e91b2033757f947a1bada3f051595966", + "stage": "verify", + "attempt": 2, + "run_state": "succeeded", + "check": "reconnect", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "tree_after_sha": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "input_sha256": "f4701414d7285b64ee5f062e3988c0f6dbab8d8030d6f8c0d9e5479e4d311677", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectDoesNotRestoreAnotherSEKey": "pass" + }, + "tests_completed": 4, + "elapsed_seconds": 59.69235420227051, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "7b7bebb6e8668568ced12926b2da30bfd6fc543cd7f04e8859c044d0ffd6d559", + "result_collected": true + }, + { + "id": "99250d1942a1c89a834647def5c64341", + "stage": "verify", + "attempt": 2, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "tree_after_sha": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "input_sha256": "545eacd7a08ff22e208d6e51906bc264ce5a91b08b62f300b2e2eb12f27a8829", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4003, + "elapsed_seconds": 252.18982577323914, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "7cc06700896048f4d28a22fc754bc8f1a4f0ca57c313eb29d537ffd4d58150d0", + "result_collected": true + }, + { + "id": "88768ed2c0a93307867b7b43f9e5492e", + "stage": "verify", + "attempt": 2, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "tree_after_sha": "d48f7ad10dae36a444610f59abca9c04d1b4862d", + "input_sha256": "ebd09f40d8912829bbd255739c306f860c2bbcc7a02255a11010a1fcb3ae39b5", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.050065755844116, + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "1ccc56c5f1b5effb7938058abc1fa791bf5407d359ffed3af4d2feafcb282407", + "result_collected": true + } + ], + "notes_recorded": 6, + "events_recorded": 18, + "distinct_worker_count": 9, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/merges.json b/.forge/evidence/merges.json new file mode 100644 index 000000000..6599ac1e8 --- /dev/null +++ b/.forge/evidence/merges.json @@ -0,0 +1,46 @@ +{ + "issue-merge.json": { + "pr": 4, + "url": "https://github.com/numinous-technology/d-inference/pull/4", + "head": "c5bdd4230bebc58615b4160d5939e94033c5f358", + "base": "ab9e8aa7a9143a7864349618fbdcae94094c93a6", + "merge_commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "verified_tree": "1ee18fef5e15958a1c06f21d34b341805f8279c3", + "ci_task": "2024d2136b28a2ffd56d89ead9ac74ff", + "workflow": 34000066360, + "merged_tree_matches": true, + "workflow_attempt": 2 + }, + "prompted-merge.json": { + "pr": 2, + "url": "https://github.com/numinous-technology/d-inference/pull/2", + "head": "fdb9a4572c3dc4941c99bbfd431fb5bae373f068", + "base": "ca65068c5a54a690b8cf6e07f2946dc25daf0551", + "merge_commit": "69bf5fc9d738e74f4881be90b819b6f7e2ff48ef", + "verified_tree": "9007bf4d8238fb88b5a168f93587416eba990595", + "ci_task": "572ed1bfc749596600e813e29c468425", + "merged_tree_matches": true + }, + "streaming-merge.json": { + "pr": 5, + "url": "https://github.com/numinous-technology/d-inference/pull/5", + "head": "9fadac3bf465b20c0a4338866dedc20e25f17fd6", + "base": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "merge_commit": "bb28702624322b07e189aa7cb532cd068881b665", + "verified_tree": "73959842c03bd84c15a1fd52e99695888909e72a", + "ci_task": "6d3495919797724f4a5a05515a46286a", + "workflow": 34004521779, + "merged_tree_matches": true + }, + "fixture-merge.json": { + "pr": 6, + "url": "https://github.com/numinous-technology/d-inference/pull/6", + "head": "9a2a01b34c226873ff46bd1aff1633793f6337e2", + "base": "bb28702624322b07e189aa7cb532cd068881b665", + "merge_commit": "9fc68d990705fd7131dc719980b76842ecd65dc2", + "verified_tree": "51806b699c11cb766fd004a7ca5a97631d19a172", + "ci_task": "2f545a2d315f36b1532dffa3fce35976", + "workflow": 34005092179, + "merged_tree_matches": true + } +} diff --git a/.forge/evidence/policy-promotion.json b/.forge/evidence/policy-promotion.json new file mode 100644 index 000000000..a226104e1 --- /dev/null +++ b/.forge/evidence/policy-promotion.json @@ -0,0 +1,38 @@ +{ + "passed": true, + "task": "9caab9bbb2f3de772ed0aa618f51b6a3", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "policy_digest": "c0f26d7da586fda2c72702cf736512909371e691eaef0893b0d9eeea404ccd85", + "project_version": "2026-09-06.2", + "project_file_sha256": "ba20dcc5b17b943819699917919bf11e2bd283e7c33bb00f3f75d14044517688", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/memory": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/postgres": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/memory": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/postgres": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/memory": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/postgres": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestGetProviderBySEKeyReturnsDeepCopy": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresMetadataAndReputationIndependently": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestFirstByteReachesClientWhileRegistryWriteLockHeld": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotLatchDoesNotWaitOnRegistryWriteLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestNoteServingSlotForPrimaryNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestNoteServingSlotForBackupPointerNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestKVBackendAttributionPromotedLatchMismatchNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestKVBackendAttributionGenuineFaultLiveWinnerNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestFrozenTerminalAttributionSurvivesReLatchNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/latch": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/live": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/latch": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/live": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestFailoverProviderCleanupJoinsActiveScript": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestDeleteMyProvider_OnlineConflict409": "pass" + }, + "verification_run": "a5c4bebb41a4aa2051f268a274219b20", + "verified_tree": "51806b699c11cb766fd004a7ca5a97631d19a172" +} diff --git a/.forge/evidence/policy-task.json b/.forge/evidence/policy-task.json new file mode 100644 index 000000000..0a9fe47a1 --- /dev/null +++ b/.forge/evidence/policy-task.json @@ -0,0 +1,89 @@ +{ + "id": "9caab9bbb2f3de772ed0aa618f51b6a3", + "lane": "ci", + "state": "verified", + "policy_digest": "c0f26d7da586fda2c72702cf736512909371e691eaef0893b0d9eeea404ccd85", + "created_at": "2026-09-06T02:07:55.903163635Z", + "updated_at": "2026-09-06T02:17:13.847578415Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "verified_tree": "51806b699c11cb766fd004a7ca5a97631d19a172", + "verification_run_ids": [ + "a5c4bebb41a4aa2051f268a274219b20", + "3f72270e5e91f1ede17ab2323fb71ae1" + ], + "runs": [ + { + "id": "a5c4bebb41a4aa2051f268a274219b20", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "tree_after_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "input_sha256": "c002dad5b002c5aafc01b6cc12630491cceef6a51883f7c597ea467a7bd7e0ea", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/memory": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/postgres": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/memory": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/postgres": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/memory": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/postgres": "pass", + "github.com/eigeninference/d-inference/coordinator/store::TestGetProviderBySEKeyReturnsDeepCopy": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresMetadataAndReputationIndependently": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestFirstByteReachesClientWhileRegistryWriteLockHeld": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotLatchDoesNotWaitOnRegistryWriteLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestNoteServingSlotForPrimaryNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestNoteServingSlotForBackupPointerNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestKVBackendAttributionPromotedLatchMismatchNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestKVBackendAttributionGenuineFaultLiveWinnerNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestFrozenTerminalAttributionSurvivesReLatchNoRegistryLock": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/latch": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/live": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/latch": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/live": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestFailoverProviderCleanupJoinsActiveScript": "pass", + "github.com/eigeninference/d-inference/coordinator/api::TestDeleteMyProvider_OnlineConflict409": "pass" + }, + "tests_completed": 4831, + "elapsed_seconds": 272.2605562210083, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "result_sha256": "8455be160ce2238de9693c1717dd20777007ec675e15ced28d58cafa79e52a53", + "result_collected": true + }, + { + "id": "3f72270e5e91f1ede17ab2323fb71ae1", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "tree_after_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "input_sha256": "0699a8da096f0c84d9a7c669de215a12d54133927cb2aa1561c6c6f244eccb3c", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.058547019958496, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "result_sha256": "9fb4bd4c70d7e21d920a43b9a51cbf92ea4f6e096b78030ede66e0588ed48d6b", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 5, + "distinct_worker_count": 2, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/prompted-ci-task.json b/.forge/evidence/prompted-ci-task.json new file mode 100644 index 000000000..5ef5170a4 --- /dev/null +++ b/.forge/evidence/prompted-ci-task.json @@ -0,0 +1,99 @@ +{ + "id": "572ed1bfc749596600e813e29c468425", + "lane": "ci", + "state": "verified", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-05T23:13:57.428527497Z", + "updated_at": "2026-09-05T23:33:56.001965198Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "fdb9a4572c3dc4941c99bbfd431fb5bae373f068" + }, + "verified_tree": "9007bf4d8238fb88b5a168f93587416eba990595", + "verification_run_ids": [ + "2dadd173e145075e943fb171d99bb54e", + "560d40486fc82bd2d8ba77eb2562320e", + "14bcbb9fd8aab7a10546754b34343810" + ], + "base_sha": "ca65068c5a54a690b8cf6e07f2946dc25daf0551", + "pr_number": 2, + "verification_source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "6fec2065a49954fa98e7ccaaa6b3f00adf2bfcb4" + }, + "runs": [ + { + "id": "2dadd173e145075e943fb171d99bb54e", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "9007bf4d8238fb88b5a168f93587416eba990595", + "tree_after_sha": "9007bf4d8238fb88b5a168f93587416eba990595", + "input_sha256": "075c9883fd6a2ff6c340c3d0f52bb48090f0b1f62020e835d8770c5f267ae65f", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 15.772090196609497, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "6fec2065a49954fa98e7ccaaa6b3f00adf2bfcb4" + }, + "result_sha256": "b9278cb645616b36d00882bc9346f3f9b4e5019d03361237c3b76c66c094b9a1", + "result_collected": true + }, + { + "id": "560d40486fc82bd2d8ba77eb2562320e", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "9007bf4d8238fb88b5a168f93587416eba990595", + "tree_after_sha": "9007bf4d8238fb88b5a168f93587416eba990595", + "input_sha256": "98de909631474c0e3ce9a3932c47d3aa97bea47a0baeed846db45dfa1b67b22d", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 3.8821864128112793, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "6fec2065a49954fa98e7ccaaa6b3f00adf2bfcb4" + }, + "result_sha256": "6594f41edbf5e2c83338671fa3f45828a79e8930ffc43ced02dc4eea3e4c5b93", + "result_collected": true + }, + { + "id": "14bcbb9fd8aab7a10546754b34343810", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "9007bf4d8238fb88b5a168f93587416eba990595", + "tree_after_sha": "9007bf4d8238fb88b5a168f93587416eba990595", + "input_sha256": "60d89af5417617e511234c5b6e5ab157add0fa05b1142fedb72cce6c407de7d8", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4800, + "elapsed_seconds": 270.49680852890015, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "6fec2065a49954fa98e7ccaaa6b3f00adf2bfcb4" + }, + "result_sha256": "e8296bd5a0b090da87e7b20816c68ceb9be6c81694f7c0d459c32ba95c904610", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 6, + "distinct_worker_count": 3, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/prompted-task.json b/.forge/evidence/prompted-task.json new file mode 100644 index 000000000..2d2b7f68f --- /dev/null +++ b/.forge/evidence/prompted-task.json @@ -0,0 +1,113 @@ +{ + "id": "87364f7dbf3d9d72eac9596d34d4625a", + "lane": "prompted", + "state": "published", + "policy_digest": "0899a75bbab3c18283279614b63cba0ec5867316cda98dce3f2a032bbea420f7", + "created_at": "2026-09-05T22:37:50.247537161Z", + "updated_at": "2026-09-05T23:13:40.241835422Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "verified_tree": "bfa23b3e397301e8e5ff31eabb456efb856be996", + "verification_run_ids": [ + "53d4185ee124317e6dedb2901b8fd27e", + "75cc23da57389b7d1b4f289b82483f8e" + ], + "publication": { + "repository": "numinous-technology/d-inference", + "branch": "forge/task-87364f7dbf3d9d72eac9596d34d4625a", + "commit": "fdb9a4572c3dc4941c99bbfd431fb5bae373f068", + "pr_number": 2 + }, + "runs": [ + { + "id": "aed4b733450c30102c08dfeab9d1a128", + "stage": "implement", + "attempt": 1, + "run_state": "failed", + "outcome": "failed", + "tree_sha": "150fa603fa7f1e7d77c1640766189b40958304a0", + "input_sha256": "bc19ebbe4bb49290ca03b7a605177dcb677236f7ed0be292350f2403e75083e5", + "elapsed_seconds": 11.03688383102417, + "model": "claude-opus-4-8", + "tool_executions": 4, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "a1495dd2ad7f4ec200fa905c69edc9b62a2519bc4f5a63cfe8e83b4c1b245325", + "result_collected": true + }, + { + "id": "1c73fca25ace41a513c4c949660570ba", + "stage": "implement", + "attempt": 2, + "run_state": "succeeded", + "outcome": "candidate", + "tree_sha": "150fa603fa7f1e7d77c1640766189b40958304a0", + "input_sha256": "cd549c7b5122ee687c201147f2e221ca3b860b66e563033836cedc525635a644", + "elapsed_seconds": 169.26795411109924, + "model": "claude-opus-4-8", + "tool_executions": 14, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "3dee0bf1fae29e037a6de4f46a6d7cf8599f43b9f1f5b4e7909305df5a73b659", + "result_collected": true + }, + { + "id": "53d4185ee124317e6dedb2901b8fd27e", + "stage": "verify", + "attempt": 2, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "bfa23b3e397301e8e5ff31eabb456efb856be996", + "tree_after_sha": "bfa23b3e397301e8e5ff31eabb456efb856be996", + "input_sha256": "62efd040d9bd78cdbe4d3d7cef0ade08f92d74ccfa6bc08531fb7efd970b0cf1", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 16.032975673675537, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "7299da50f391da480871387c42fa71f3bfcdab8bd89fabbafd67ea4909e30786", + "result_collected": true + }, + { + "id": "75cc23da57389b7d1b4f289b82483f8e", + "stage": "verify", + "attempt": 2, + "run_state": "succeeded", + "check": "wire-fuzz", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "bfa23b3e397301e8e5ff31eabb456efb856be996", + "tree_after_sha": "bfa23b3e397301e8e5ff31eabb456efb856be996", + "input_sha256": "94866fdb622fb1a5e72c299b60ef8a245348e49ca874f6dc708d9438f9bec251", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation": "pass" + }, + "tests_completed": 1, + "elapsed_seconds": 26.735350131988525, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "d9568de27f7a5d2f834263db89afa7dbd89f6dccca422900f8c4ac6c29fa25b3", + "result_collected": true + } + ], + "notes_recorded": 1, + "events_recorded": 11, + "distinct_worker_count": 4, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/qualification-attempts.json b/.forge/evidence/qualification-attempts.json new file mode 100644 index 000000000..2162f721b --- /dev/null +++ b/.forge/evidence/qualification-attempts.json @@ -0,0 +1,65 @@ +{ + "attempts": [ + { + "batch": "forge-final-20260906-022137-18e99b8", + "passed": false, + "stopped_at": "qualify_forge", + "check": "Pi timeout preserves tracked and new workspace changes", + "run": "331e1463474015ca4de557f30f12dd49", + "observed": "Pi declined the test request without invoking a tool, so the requested timeout never occurred. Qualification rejected the successful no-change result.", + "correction": "Explain that the tracked and new file edits are the intended recovery test data and allow script inspection. Preserve the timeout and artifact assertions.", + "targeted_correction_check": { + "passed": true, + "batch": "forge-timeout-fixture-20260906-0249", + "checks": [ + { + "check": "Pi timeout preserves tracked and new workspace changes", + "passed": true, + "run": "72de52724542adde10787d2933410b06", + "source": { + "repo": "https://github.com/Layr-Labs/d-inference.git", + "commit": "07ffb6c3d086803ba4d9800da87bf13d6b325fb5" + }, + "candidate_sha256": "6c1c2789677810bfb57dcc3db95f460d4ab991400083fe01c0f06417356d8a17", + "workspace_sha256": "3f9761981b25cbeae3f858d9fa5e24e760b3b061c49d9e5c84eee4efe50bc04e" + } + ] + } + }, + { + "batch": "forge-final-20260906-025337-b8e8039", + "passed": true, + "build": "b8e803915ce63c6d40f9577ecf8afc7ea28130b6", + "finished_at": "2026-09-06T03:32:46.319662+00:00", + "steps": [ + "check_queue_window", + "acceptance", + "check_artifact_integrity", + "check_budget", + "check_reaper", + "check_source", + "check_operator", + "qualify_forge", + "check_idle" + ] + }, + { + "batch": "numinous-forge-final-20260906-033421-5d81e2a", + "passed": true, + "build": "5d81e2a55a6985766661ad392561da6606f654d4", + "finished_at": "2026-09-06T04:13:20.614533+00:00", + "steps": [ + "check_queue_window", + "acceptance", + "check_artifact_integrity", + "check_budget", + "check_reaper", + "check_source", + "check_operator", + "qualify_forge", + "check_idle" + ], + "reason": "Full qualification after renaming the installed CLI to numinous-forge" + } + ] +} diff --git a/.forge/evidence/qualification.json b/.forge/evidence/qualification.json new file mode 100644 index 000000000..d62695b2a --- /dev/null +++ b/.forge/evidence/qualification.json @@ -0,0 +1,133 @@ +{ + "passed": true, + "scope": "Single-project Linux infrastructure, CLI and Forge verification guards", + "sequence": { + "passed": true, + "batch": "numinous-forge-final-20260906-033421-5d81e2a", + "build": "5d81e2a55a6985766661ad392561da6606f654d4", + "started_at": "2026-09-06T03:34:22.267406+00:00", + "finished_at": "2026-09-06T04:13:20.614533+00:00", + "steps": [ + "check_queue_window", + "acceptance", + "check_artifact_integrity", + "check_budget", + "check_reaper", + "check_source", + "check_operator", + "qualify_forge", + "check_idle" + ], + "sha256": { + "bin/numinous-forge": "e89bb483d63406ae348cba92639451059c6f7828dac584adee4d651737a50731", + "bin/forged": "d56308226e6dc825e3527c8449f5532fd00c06635d471de0e9a99bf38847d0a2", + "runtime/bootstrap.sh": "0c7aa12220ba85a72ab67011bf1b57a194cac415ec74197cc6442f0b6760c1cb", + "runtime/supervisor.py": "72ecf0f0b710bf132422e88f22233d621b659abac14a9f47b3f83890f8466b33", + "projects/darkbloom.json": "ba20dcc5b17b943819699917919bf11e2bd283e7c33bb00f3f75d14044517688", + "projects/skills/engineering.md": "727f1388c95649c92dbde03962dec3005192726958c8d333b745a0b1fba49930", + "projects/skills/reputation.md": "aa7a38b8e729d8a82b8ac32dafb464038543c667ff10838ad6ef75336e188fca" + } + }, + "controller_sha256": "d56308226e6dc825e3527c8449f5532fd00c06635d471de0e9a99bf38847d0a2", + "deployed_controller_matches": true, + "original_receipt_sha256": "3ab7779f07d32c39f75e6c697adc233126fa17d35b60ab4d1d8842e7420ae424", + "checks": [ + { + "name": "authentication and input rejection", + "passed": true + }, + { + "name": "idempotency and conflict", + "passed": true + }, + { + "name": "EC2 execution and S3 integrity", + "passed": true + }, + { + "name": "Pi RPC and scoped model access", + "passed": true + }, + { + "name": "cancel confirms worker termination", + "passed": true + }, + { + "name": "controller restart adopts existing execution", + "passed": true + }, + { + "name": "failed-command", + "passed": true + }, + { + "name": "missing-test", + "passed": true + }, + { + "name": "timeout", + "passed": true + }, + { + "name": "isolation", + "passed": true + }, + { + "name": "no live worker resources after qualification", + "passed": true + } + ], + "forge_checks": [ + { + "name": "large S3-backed input roundtrip and execution", + "passed": true + }, + { + "name": "zero-exit command cannot verify a different source tree", + "passed": true + }, + { + "name": "Pi timeout preserves tracked and new workspace changes", + "passed": true + }, + { + "name": "unsupported Mac work blocks before allocating a run", + "passed": true + } + ], + "controller_restart_during_execution": true, + "budget_admission_test_passed": true, + "limitations": [ + "Single configured project and single controller", + "Linux execution only; Mac, Rust sidecar and browser-specific paths block", + "Slack not installed", + "Schedule paused after demonstration", + "Reservations are not an AWS billing hard cutoff" + ], + "extra_checks": [ + { + "name": "Artifact corruption rejection", + "passed": true + }, + { + "name": "Cleanup with controller stopped", + "passed": true + }, + { + "name": "Budget rejection", + "passed": true + }, + { + "name": "Pinned Darkbloom source checks", + "passed": true + }, + { + "name": "Aurora pause and resume", + "passed": true + }, + { + "name": "Durable task/schedule CAS and unfinished queue visibility", + "passed": true + } + ] +} diff --git a/.forge/evidence/rejected-ci-task.json b/.forge/evidence/rejected-ci-task.json new file mode 100644 index 000000000..7aa2a4174 --- /dev/null +++ b/.forge/evidence/rejected-ci-task.json @@ -0,0 +1,98 @@ +{ + "id": "b22197920e2b15136c685b1fcd6a04b7", + "lane": "ci", + "state": "blocked", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-05T22:50:19.829635194Z", + "updated_at": "2026-09-05T23:18:57.289019684Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "21ff4c6ae7a246f52f214e9a86a0c14a10f0dfc1" + }, + "base_sha": "ca65068c5a54a690b8cf6e07f2946dc25daf0551", + "pr_number": 1, + "verification_source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "d4298a3ed66f64802fa46bce4e063a58fdbd9bab" + }, + "runs": [ + { + "id": "79d1db2170e0d64e87f88ab4dc2ef7fd", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "aa37c7e7ff27af15b3c42e2056a9f6292ecd565d", + "tree_after_sha": "aa37c7e7ff27af15b3c42e2056a9f6292ecd565d", + "input_sha256": "3c800a1584b8d9fdd5af3b2b7b1860664bb6a527fe3e5d69b5111b3e6977bc57", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 244, + "elapsed_seconds": 16.51482105255127, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "d4298a3ed66f64802fa46bce4e063a58fdbd9bab" + }, + "result_sha256": "1cbcf9be3d9d993c436d51a9289498a37ad48f23227c34020e8198124c2d901f", + "result_collected": true + }, + { + "id": "7684ba8d0a15b51cc9e4e1d00aa6c22a", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "aa37c7e7ff27af15b3c42e2056a9f6292ecd565d", + "tree_after_sha": "aa37c7e7ff27af15b3c42e2056a9f6292ecd565d", + "input_sha256": "0490a7dc0168e96ed0837e81ba05d3f8f23864ce3d2e5a14203870fcbd824933", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.152960777282715, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "d4298a3ed66f64802fa46bce4e063a58fdbd9bab" + }, + "result_sha256": "0f5798a9e2fb114e77d19a4dfda8e623609060b7fe2845fb493525c8e6e65785", + "result_collected": true + }, + { + "id": "3e7f27ed51408db9715be540494fcf80", + "stage": "verify", + "attempt": 1, + "run_state": "failed", + "check": "coordinator", + "outcome": "failed", + "exit_code": 1, + "tree_sha": "aa37c7e7ff27af15b3c42e2056a9f6292ecd565d", + "tree_after_sha": "aa37c7e7ff27af15b3c42e2056a9f6292ecd565d", + "input_sha256": "4e2d41d083a376c70b58925e1c0931929a948be0aa143de3f804a027095bd105", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4789, + "elapsed_seconds": 260.28693413734436, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "d4298a3ed66f64802fa46bce4e063a58fdbd9bab" + }, + "result_sha256": "a2991946764ba85e95a7057fe2725d9dc16f56b8f8512123c01f9cda1726a19e", + "result_collected": true, + "failed_tests": [ + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectDoesNotRestoreAnotherSEKey", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup/with_serial", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup/without_serial" + ] + } + ], + "notes_recorded": 0, + "events_recorded": 6, + "distinct_worker_count": 3 +} diff --git a/.forge/evidence/schedule-promotion.json b/.forge/evidence/schedule-promotion.json new file mode 100644 index 000000000..e3a401b16 --- /dev/null +++ b/.forge/evidence/schedule-promotion.json @@ -0,0 +1,28 @@ +{ + "passed": true, + "schedule": "qualification-protocol", + "task": "a0f67fa83277c70706960a6a39c8e9df", + "previous_task": "213969b2bb6dfc0bfaeaf2098146e796", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "policy_digest": "c0f26d7da586fda2c72702cf736512909371e691eaef0893b0d9eeea404ccd85", + "history_tasks": [ + { + "id": "a0f67fa83277c70706960a6a39c8e9df", + "state": "verified", + "source": "9fc68d990705fd7131dc719980b76842ecd65dc2", + "policy_digest": "c0f26d7da586fda2c72702cf736512909371e691eaef0893b0d9eeea404ccd85" + }, + { + "id": "213969b2bb6dfc0bfaeaf2098146e796", + "state": "verified", + "source": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d" + } + ], + "paused": true, + "previous_occurrence_unchanged": true, + "fuzz_regression_required_and_passed": true +} diff --git a/.forge/evidence/scheduled-first-task.json b/.forge/evidence/scheduled-first-task.json new file mode 100644 index 000000000..aaa90000b --- /dev/null +++ b/.forge/evidence/scheduled-first-task.json @@ -0,0 +1,47 @@ +{ + "id": "213969b2bb6dfc0bfaeaf2098146e796", + "lane": "ci", + "state": "verified", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-05T22:45:10.272072999Z", + "updated_at": "2026-09-05T22:56:26.308033883Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "verified_tree": "150fa603fa7f1e7d77c1640766189b40958304a0", + "verification_run_ids": [ + "c4d3042a33649477cdd61f74d383ea18" + ], + "runs": [ + { + "id": "c4d3042a33649477cdd61f74d383ea18", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "150fa603fa7f1e7d77c1640766189b40958304a0", + "tree_after_sha": "150fa603fa7f1e7d77c1640766189b40958304a0", + "input_sha256": "e2c0bb09d8e479b92cc1f8d424eb62eee0863620282031e60e1d9a5f4a3d3e41", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 244, + "elapsed_seconds": 16.740294456481934, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783" + }, + "result_sha256": "f04f5d8b4aae9bd600e5feb2bcfdd197179fefb5bc864f1c695ec1a42f839cdc", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 4, + "distinct_worker_count": 1, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/scheduled-task.json b/.forge/evidence/scheduled-task.json new file mode 100644 index 000000000..6a4673a23 --- /dev/null +++ b/.forge/evidence/scheduled-task.json @@ -0,0 +1,48 @@ +{ + "id": "a0f67fa83277c70706960a6a39c8e9df", + "lane": "ci", + "state": "verified", + "policy_digest": "c0f26d7da586fda2c72702cf736512909371e691eaef0893b0d9eeea404ccd85", + "created_at": "2026-09-06T02:18:43.168409352Z", + "updated_at": "2026-09-06T02:21:21.077565621Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "verified_tree": "51806b699c11cb766fd004a7ca5a97631d19a172", + "verification_run_ids": [ + "b8a8bc1f8692e6be67906d254b47bc2c" + ], + "runs": [ + { + "id": "b8a8bc1f8692e6be67906d254b47bc2c", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "tree_after_sha": "51806b699c11cb766fd004a7ca5a97631d19a172", + "input_sha256": "bb0c04dab18922e4df1ee99bf772dbd5aed1d91fcc8f756450dfe7e1e919aedc", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 14.395652532577515, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fc68d990705fd7131dc719980b76842ecd65dc2" + }, + "result_sha256": "7acc5585e8f3ebcb79e1aff376a09b5fc29a5b6f1876349efe4a03490a80e4fa", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 4, + "distinct_worker_count": 1, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/streaming-ci-task.json b/.forge/evidence/streaming-ci-task.json new file mode 100644 index 000000000..04e2a3eea --- /dev/null +++ b/.forge/evidence/streaming-ci-task.json @@ -0,0 +1,99 @@ +{ + "id": "6d3495919797724f4a5a05515a46286a", + "lane": "ci", + "state": "verified", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-06T01:41:19.07577461Z", + "updated_at": "2026-09-06T01:53:14.075973624Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9fadac3bf465b20c0a4338866dedc20e25f17fd6" + }, + "verified_tree": "73959842c03bd84c15a1fd52e99695888909e72a", + "verification_run_ids": [ + "9e059fd9292acaf6011a9006f4306127", + "698f43d31bd2aff21195b06589c0b9cb", + "38f7b26906b5a00ffc3486e081c790e2" + ], + "base_sha": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "pr_number": 5, + "verification_source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "4c1c7f104f7ca53b1e95e90f3c110ffa85094573" + }, + "runs": [ + { + "id": "9e059fd9292acaf6011a9006f4306127", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "protocol", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "tree_after_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "input_sha256": "4143172949108c20856ee9d727a353a50ffcc7a77472c445ee137642c63ee4c3", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip": "pass", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary": "pass" + }, + "tests_completed": 259, + "elapsed_seconds": 16.193966150283813, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "4c1c7f104f7ca53b1e95e90f3c110ffa85094573" + }, + "result_sha256": "ed42b888b0259c18ab1937b2090c02c30da738ac73374243c2d7d98b44acb307", + "result_collected": true + }, + { + "id": "698f43d31bd2aff21195b06589c0b9cb", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "tree_after_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "input_sha256": "d0857bd322a2e76b89b8bb52bed8fd140dce16d43de5d6582b7ea15e31ba9209", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 3.867556095123291, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "4c1c7f104f7ca53b1e95e90f3c110ffa85094573" + }, + "result_sha256": "d71195c632d6af7a4fa6e57814f331b762ac409031ebaf2c0870a6a31ee494db", + "result_collected": true + }, + { + "id": "38f7b26906b5a00ffc3486e081c790e2", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "tree_after_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "input_sha256": "46f12bfc739ba8346cd427572b083aa75e8899096d3079ebd06a49fcc0a4a68f", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4830, + "elapsed_seconds": 263.055677652359, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "4c1c7f104f7ca53b1e95e90f3c110ffa85094573" + }, + "result_sha256": "535b550953c15a1fb3546b7b19f02a82cc3bfe90fcdb0df58578f442c32c574e", + "result_collected": true + } + ], + "notes_recorded": 0, + "events_recorded": 6, + "distinct_worker_count": 3, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/streaming-investigation.json b/.forge/evidence/streaming-investigation.json new file mode 100644 index 000000000..0822d554a --- /dev/null +++ b/.forge/evidence/streaming-investigation.json @@ -0,0 +1,112 @@ +{ + "original_ci_task": "1d085cf27b0e152d63bd5620f74dd9e1", + "original_ci_run": "52d52b54403b8dba9fdeb5078541277d", + "test": "TestFirstByteReachesClientWhileRegistryWriteLockHeld", + "observed_failure": "HTTP response headers missed the 2-second deadline while the registry write lock was held", + "aws_repetitions": [ + { + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "ab9e8aa7a9143a7864349618fbdcae94094c93a6" + }, + "run": "00f19ab7c6d3764c61c4b840aec405e2", + "natural_repetitions": 20, + "passed": 20, + "failed": 0, + "result_sha256": "1a91996fa727571a00af211f570ac16bbda8266158ba9ec8dd7ce95c93c24e41" + }, + { + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "deb9d0e49fa03172975d3e600626941863305c5e" + }, + "run": "dd237e45f57640cb64de1d26ceb8c626", + "natural_repetitions": 20, + "passed": 20, + "failed": 0, + "result_sha256": "ac0e668c15194ccebd10130cd2022b8227f915cd35b2c56ff617189b9c5b8125" + } + ], + "controlled_reproduction": { + "source": "bbf6f83d4bbe66ae1a78c8f5cec898e3fbff5783", + "relevant_files_unchanged_at_fork_base": "ab9e8aa7a9143a7864349618fbdcae94094c93a6", + "natural_local_repetitions_passed": 40, + "diagnostic_pause_ms": 25, + "pause_location": "immediately before the existing post-handoff noteServingSlot call", + "same_header_assertion_failed": true, + "blocked_stack": [ + "dispatchPrimary", + "noteServingSlot", + "noteServingSlotFor", + "kvBackendAttribution", + "Registry.SlotKVBackendTags", + "Registry.GetProvider", + "RWMutex.RLock" + ], + "interpretation": "Demonstrates a pre-existing lock dependency under a valid scheduling interleaving and a matching symptom; the original CI execution did not capture a stack." + }, + "repair_task": "aa4791197ffd99d5cc84816bb072b339", + "first_candidate_review": { + "candidate_sha256": "5ae0f39ddc04002cc2e20171c9f58cf0c7d74c9e1bb4efc891e20fbb9f050742", + "verdict": "revision required", + "reason": "Primary path fixed; backup latch, promoted winner and genuine-fault live winner still wait for the global registry lock", + "diagnostic_results": [ + { + "test": "TestForgeReviewAttributionWithoutRegistryLock/primary_pointer", + "action": "pass", + "elapsed": 0.01 + }, + { + "test": "TestForgeReviewAttributionWithoutRegistryLock/backup_latch", + "action": "fail", + "elapsed": 1.01 + }, + { + "test": "TestForgeReviewAttributionWithoutRegistryLock/promoted_winner", + "action": "fail", + "elapsed": 1.01 + }, + { + "test": "TestForgeReviewAttributionWithoutRegistryLock/genuine_fault_live_winner", + "action": "fail", + "elapsed": 1 + }, + { + "test": "TestForgeReviewAttributionWithoutRegistryLock", + "action": "fail", + "elapsed": 3.02 + }, + { + "test": "PACKAGE", + "action": "fail", + "elapsed": 3.074 + } + ], + "diagnostic_sha256": "a97e229c8e0ecbba49e9ef00d0dd44e9ac8263ddd64e33aaa3a75cba04886605", + "log_sha256": "b04949e609f8a68088f0d979ff1fbad8172f4925040a20abd8094291b05f5264", + "primary_negative_control": { + "results": [ + { + "test": "TestServingSlotLatchDoesNotWaitOnRegistryWriteLock", + "action": "fail", + "elapsed": 2.37 + }, + { + "test": "PACKAGE", + "action": "fail", + "elapsed": 2.435 + } + ], + "log_sha256": "e6a898daffaabaa41d293c4ff1973e500df9106a43b69bc5b25e547108483e51" + } + }, + "superseded_task": "ad924ae7465764355f7a07be225384e8", + "continuation": { + "reason": "Fork master advanced while the task was running; the two new changelog entries conflicted", + "source": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "starting_candidate_sha256": "5ae0f39ddc04002cc2e20171c9f58cf0c7d74c9e1bb4efc891e20fbb9f050742", + "rebased_input_patch_sha256": "8729866d0b276ec405a9f6fab9b7836c7c9415350aa7490b78a35aa4667ab34b", + "conflict_resolution": "Preserved both Unreleased changelog entries; other patch files applied cleanly", + "remaining_review_findings_carried_into_request": true + } +} diff --git a/.forge/evidence/streaming-recovery.json b/.forge/evidence/streaming-recovery.json new file mode 100644 index 000000000..2a0639077 --- /dev/null +++ b/.forge/evidence/streaming-recovery.json @@ -0,0 +1,45 @@ +{ + "base": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "task": "aa4791197ffd99d5cc84816bb072b339", + "failed_run": "5fc0e1d5b7401200930fede98f663485", + "transcript_sha256": "2c5102f3c7577b7d6fceb6ab698e3f4265c7530da826213adfcc77a3bd2164f0", + "starting_patch_sha256": "8729866d0b276ec405a9f6fab9b7836c7c9415350aa7490b78a35aa4667ab34b", + "recovered_patch_sha256": "9c43eaa1b5d28a4c3077aa722ccfa117f4593abedeab58e29299586f1684816e", + "recovered_patch_bytes": 31505, + "recovered_files": [ + "CHANGELOG.md", + "coordinator/api/dispatch.go", + "coordinator/api/dispatch_speculative_outcome_test.go", + "coordinator/api/first_byte_serving_slot_lock_test.go", + "coordinator/api/kv_backend_metrics.go", + "coordinator/api/kv_backend_metrics_test.go", + "coordinator/api/server.go", + "coordinator/api/serving_slot_lock_helpers_test.go" + ], + "unrecovered_source_edits": [], + "limitations": [ + "Recovered source is a new locally reconstructed candidate, not an artifact produced by the timed-out worker.", + "No test command or arbitrary bash from transcript executed. Independent tests recorded separately." + ], + "replayed_successful_source_edits": 11, + "verification": "Recovered changes require a new task and independent verification; the timed-out run did not produce a verified candidate.", + "continuation_task": "30589095b35cf00ef20dee1214ba0e27", + "operator_finished_patch_sha256": "5b9a568366e94feb09cbbc045a85cd4f3172b6714d88cb518ebc9e9f7c6bc838", + "finishing_changes": [ + "Shorten added production comments", + "Bound regression cleanup waits", + "Cover missing and mismatched retained providers" + ], + "independent_review": { + "focused_race_repetitions": 3, + "focused_exit_code": 0, + "old_lookup_negative_control_exit_code": 1, + "full_local_api_exit_code": 1, + "full_local_api_findings": [ + "TestDeleteMyProvider_OnlineConflict409 returned ownership403 instead of409", + "TestServiceReasoningPolicyTracksAliasCapacityFallback provider goroutine logged after testcompletion" + ], + "baseline_attribution": "Both affected fixtures are unchanged from the base. The unchanged-base delete fixture fails6of20repetitions; the old cleanup fails a new realHTTP regression. Separate fixture-only fixes pass20focusedrace repetitions.", + "separate_fix_proof": "fixture-regression-proof.json" + } +} diff --git a/.forge/evidence/streaming-regression-proof.json b/.forge/evidence/streaming-regression-proof.json new file mode 100644 index 000000000..219b27b61 --- /dev/null +++ b/.forge/evidence/streaming-regression-proof.json @@ -0,0 +1,33 @@ +{ + "task": "30589095b35cf00ef20dee1214ba0e27", + "candidate_sha256": "9f46bb27bcb7162ebddf2f1d9399e36b2864edbbe5b63a8350499e263c2257e5", + "source_base": "9ad2aa17bcb13598804d074c3cdada2aeed80b72", + "matches_reviewed_files": true, + "focused_race_repetitions": 3, + "focused_exit_code": 0, + "negative_control": "Reintroduce the old registry lookups without altering regression assertions.", + "negative_control_exit_code": 1, + "negative_control_failed_tests": [ + "TestKVBackendAttributionGenuineFaultLiveWinnerNoRegistryLock", + "TestKVBackendAttributionPromotedLatchMismatchNoRegistryLock", + "TestNoteServingSlotForBackupPointerNoRegistryLock", + "TestNoteServingSlotForPrimaryNoRegistryLock", + "TestServingSlotLatchDoesNotWaitOnRegistryWriteLock", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/latch", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/live", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/latch", + "TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/live" + ], + "first_byte_deadline_seconds": 2, + "frozen_terminal_negative_control": "Still passes because restoring global reads does not change the frozen terminal path.", + "evidence_sha256": { + "finished-focused.jsonl": "02e0a70ca3ca2efd29709d378fdabfcc09ee86442842e4f27099a5fa4674fdf4", + "finished-negative-control.jsonl": "900a0f2392fe37ce4530c4788af4c05ba121e10d346c40574c60916f99fa0144", + "negative-control.patch": "570979d95b1d236a32e68e0ef631ff7f85f0a8c30fed12b1ff84398ae0cdcf97" + }, + "limitation": "The broader local API run found separate test-fixture failures, retained in streaming-recovery.json. Fresh Forge coordinator verification is required independently.", + "relatch_review": "A matching provider/model latch belongs to the same serving attempt. Failed serving attempts retain the provider in the request exclusion set; direct, retained-plan, and queue selection honor it. Reuse within an attempt preserves dispatch-time attribution across heartbeat updates. Incoming requests create new dispatchState values." +} diff --git a/.forge/evidence/streaming-superseded-task.json b/.forge/evidence/streaming-superseded-task.json new file mode 100644 index 000000000..704c91fb1 --- /dev/null +++ b/.forge/evidence/streaming-superseded-task.json @@ -0,0 +1,87 @@ +{ + "id": "ad924ae7465764355f7a07be225384e8", + "lane": "prompted", + "state": "cancelled", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-06T00:15:46.003408032Z", + "updated_at": "2026-09-06T00:47:37.102898496Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "ab9e8aa7a9143a7864349618fbdcae94094c93a6" + }, + "runs": [ + { + "id": "4ae5ecdf7a6b7292346b63717349ea60", + "stage": "implement", + "attempt": 1, + "run_state": "succeeded", + "outcome": "candidate", + "tree_sha": "f6df82f002e433561d50910bd6e36e3d6652675d", + "input_sha256": "50db987f018d7df3fe47f0509780256c72207f0b69bb6c7582662c81f13c4586", + "elapsed_seconds": 956.8582091331482, + "model": "claude-opus-4-8", + "tool_executions": 46, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "ab9e8aa7a9143a7864349618fbdcae94094c93a6" + }, + "result_sha256": "09aa8ccb5c380368d0af937c70141fceeffeb0bc304ea12cdb4081e165fec426", + "result_collected": true + }, + { + "id": "0aabe38754bef5bb9f687def274cbf5c", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "296386fc420fa0a5affb23aab95af099fdb4b4e2", + "tree_after_sha": "296386fc420fa0a5affb23aab95af099fdb4b4e2", + "input_sha256": "025e9e3a5f3f1bf651506b23d530937df6a7260c0e6a2e0999ed154d58355ef5", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4801, + "elapsed_seconds": 258.09193420410156, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "ab9e8aa7a9143a7864349618fbdcae94094c93a6" + }, + "result_sha256": "9555b426ae18b57f7c0f02691d8c53c10a3c195153d0d8950d7238b8954a3d5a", + "result_collected": true + }, + { + "id": "1afd8a089bc9ccbb183c136492996824", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "296386fc420fa0a5affb23aab95af099fdb4b4e2", + "tree_after_sha": "296386fc420fa0a5affb23aab95af099fdb4b4e2", + "input_sha256": "447ff33ef43e47ecafdc110c25d6d1cb4ec312c882ecb0eb969d9e66a5da41e5", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 3.843571186065674, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "ab9e8aa7a9143a7864349618fbdcae94094c93a6" + }, + "result_sha256": "ed0a4e26fe4991571d2d71aa891480b4b73ad9033d7b47fa55cb1a409ad09406", + "result_collected": true + }, + { + "id": "45a2d75ab520595a52c1ab1cd00fa71e", + "stage": "implement", + "attempt": 2, + "run_state": "cancelled", + "outcome": "not_collected", + "result_collected": false + } + ], + "notes_recorded": 5, + "events_recorded": 11, + "distinct_worker_count": 4 +} diff --git a/.forge/evidence/streaming-task.json b/.forge/evidence/streaming-task.json new file mode 100644 index 000000000..f32677d03 --- /dev/null +++ b/.forge/evidence/streaming-task.json @@ -0,0 +1,91 @@ +{ + "id": "30589095b35cf00ef20dee1214ba0e27", + "lane": "prompted", + "state": "published", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-06T01:23:49.116294156Z", + "updated_at": "2026-09-06T01:40:54.673749445Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72" + }, + "verified_tree": "73959842c03bd84c15a1fd52e99695888909e72a", + "verification_run_ids": [ + "5acedec2fdea5c235c246cedc079b22f", + "7691910dcb0e9db936f1356ca80fb7e2" + ], + "publication": { + "repository": "numinous-technology/d-inference", + "branch": "forge/task-30589095b35cf00ef20dee1214ba0e27", + "commit": "9fadac3bf465b20c0a4338866dedc20e25f17fd6", + "pr_number": 5 + }, + "runs": [ + { + "id": "a86790af2db54c200b9fd0fabfafc567", + "stage": "implement", + "attempt": 1, + "run_state": "succeeded", + "outcome": "candidate", + "tree_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "input_sha256": "5f3dd988d10424db1af6f1ff71dd34b6df8025db1b44f20a77392ac050d83626", + "elapsed_seconds": 226.9815001487732, + "model": "claude-opus-4-8", + "tool_executions": 25, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72" + }, + "result_sha256": "33df2b26a19451fe292f173893da95826a398a6d7673362777c1a48ebdbc29de", + "result_collected": true + }, + { + "id": "5acedec2fdea5c235c246cedc079b22f", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "coordinator", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "tree_after_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "input_sha256": "723b41cf8b718f3bae9dc7d3ed376e1c9700f41abca5f11a354fbf805c77b96c", + "required_tests": { + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted": "pass" + }, + "tests_completed": 4830, + "elapsed_seconds": 259.63029527664185, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72" + }, + "result_sha256": "975a5224be46d29ff38fe1eb11073df96e492e74b3a28bb194856b71ed27c918", + "result_collected": true + }, + { + "id": "7691910dcb0e9db936f1356ca80fb7e2", + "stage": "verify", + "attempt": 1, + "run_state": "succeeded", + "check": "docs", + "outcome": "passed", + "exit_code": 0, + "tree_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "tree_after_sha": "73959842c03bd84c15a1fd52e99695888909e72a", + "input_sha256": "955886a974032e6e2aa8a6c5497385d552914902bc9b869fa7d981e1955074ed", + "required_tests": {}, + "tests_completed": 0, + "elapsed_seconds": 4.042024374008179, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72" + }, + "result_sha256": "5de1b9dd69fff9550c64d2fc5495eea45314c2694f54da5bd820be82dd3022c4", + "result_collected": true + } + ], + "notes_recorded": 1, + "events_recorded": 8, + "distinct_worker_count": 3, + "verification_tree_consistent": true +} diff --git a/.forge/evidence/streaming-timed-out-task.json b/.forge/evidence/streaming-timed-out-task.json new file mode 100644 index 000000000..da415ca7c --- /dev/null +++ b/.forge/evidence/streaming-timed-out-task.json @@ -0,0 +1,33 @@ +{ + "id": "aa4791197ffd99d5cc84816bb072b339", + "lane": "prompted", + "state": "blocked", + "policy_digest": "f6b77f17eafcfc1feefc4567319da0e564d02ed90cc71129956ec97444f4781d", + "created_at": "2026-09-06T00:47:07.333011987Z", + "updated_at": "2026-09-06T01:20:08.808951698Z", + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72" + }, + "runs": [ + { + "id": "5fc0e1d5b7401200930fede98f663485", + "stage": "implement", + "attempt": 1, + "run_state": "timed_out", + "outcome": "timed_out", + "tree_sha": "96ad86f79ab6fc09c8ead156ebca71bd0ba5a82c", + "input_sha256": "dfc01cfbcb1113ceff8d83fbea7364b52db012f645c486d42bac9a41e4f69766", + "elapsed_seconds": 1802.4812834262848, + "source": { + "repo": "https://github.com/numinous-technology/d-inference.git", + "commit": "9ad2aa17bcb13598804d074c3cdada2aeed80b72" + }, + "result_sha256": "af5b338d4183eb2f44cb1681ce45d58b12ad31ad2ce567ad3690a62ba20cb6e2", + "result_collected": true + } + ], + "notes_recorded": 2, + "events_recorded": 4, + "distinct_worker_count": 1 +} diff --git a/.forge/policy/darkbloom.json b/.forge/policy/darkbloom.json new file mode 100644 index 000000000..463db0348 --- /dev/null +++ b/.forge/policy/darkbloom.json @@ -0,0 +1,240 @@ +{ + "name": "darkbloom", + "version": "2026-09-06.2", + "repositories": [ + "https://github.com/Layr-Labs/d-inference.git", + "https://github.com/numinous-technology/d-inference.git" + ], + "publish_repository": "numinous-technology/d-inference", + "profiles": [ + { + "name": "protocol", + "instructions": "Verify protocol behavior and preserve wire compatibility. For prompted work implement only the requested coverage or behavior.", + "skills": [ + "engineering" + ], + "checks": [ + "protocol" + ], + "timeout_seconds": 1200 + }, + { + "name": "coordinator", + "instructions": "Work on the Go coordinator. Preserve API compatibility, authentication, persistence, and live-isolated test coverage.", + "skills": [ + "engineering" + ], + "checks": [ + "coordinator", + "docs" + ], + "timeout_seconds": 1800 + }, + { + "name": "reputation", + "instructions": "Fix the demonstrated provider reconnect reputation failure. Keep the change focused; inspect both memory and PostgreSQL paths. Keep the supplied regression tests unchanged. Add coverage for missing history and repeated reconnects.", + "skills": [ + "engineering", + "reputation" + ], + "checks": [ + "reconnect", + "coordinator", + "docs" + ], + "timeout_seconds": 1800 + }, + { + "name": "provider", + "instructions": "Work on the Swift provider with native Apple Silicon verification.", + "skills": [ + "engineering" + ], + "checks": [ + "provider" + ], + "timeout_seconds": 1800 + }, + { + "name": "ci", + "instructions": "Run accepted checks for the pinned pull request revision.", + "skills": [ + "engineering" + ], + "checks": [ + "protocol", + "docs" + ], + "timeout_seconds": 1200 + } + ], + "checks": [ + { + "name": "protocol", + "command": [ + "go", + "test", + "-json", + "./coordinator/protocol", + "-count=1" + ], + "required_tests": [ + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityProbeRoundTrip", + "github.com/eigeninference/d-inference/coordinator/protocol::TestCapacityQuoteRoundTrip", + "github.com/eigeninference/d-inference/coordinator/protocol::TestInferenceFailureCodeClosedVocabulary", + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation" + ], + "capability": "linux", + "timeout_seconds": 600 + }, + { + "name": "reconnect", + "command": [ + "go", + "test", + "-json", + "./coordinator/api", + "-run", + "^TestProviderReconnect(RestoresReputationEarnedAfterStartup|DoesNotRestoreAnotherSEKey)$", + "-count=1" + ], + "required_tests": [ + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresReputationEarnedAfterStartup", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectDoesNotRestoreAnotherSEKey" + ], + "files": { + "coordinator/api/provider_reputation_reconnect_test.go": "package api\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"log/slog\"\n\t\"net/http/httptest\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/eigeninference/d-inference/coordinator/attestation\"\n\t\"github.com/eigeninference/d-inference/coordinator/protocol\"\n\t\"github.com/eigeninference/d-inference/coordinator/registry\"\n\t\"github.com/eigeninference/d-inference/coordinator/store\"\n\t\"nhooyr.io/websocket\"\n)\n\nfunc TestProviderReconnectRestoresReputationEarnedAfterStartup(t *testing.T) {\n\tfor _, serial := range []string{\"reconnect-device\", \"\"} {\n\t\tname := \"with_serial\"\n\t\tif serial == \"\" {\n\t\t\tname = \"without_serial\"\n\t\t}\n\t\tt.Run(name, func(t *testing.T) { testProviderReconnectRestoresReputation(t, serial) })\n\t}\n}\n\nfunc testProviderReconnectRestoresReputation(t *testing.T, serial string) {\n\tt.Helper()\n\tlogger := slog.New(slog.NewTextHandler(io.Discard, nil))\n\tst := store.NewMemory(store.Config{})\n\treg := registry.New(logger)\n\tsrv := NewServer(reg, st, ServerConfig{}, logger)\n\tt.Cleanup(srv.Close)\n\tpublicKey := testPublicKeyB64()\n\tblob := createTestAttestationJSONWithSerial(t, serial, publicKey)\n\tidentity, err := attestation.VerifyJSON(blob)\n\tif err != nil || !identity.Valid {\n\t\tt.Fatalf(\"invalid test attestation: %v, %+v\", err, identity)\n\t}\n\n\t// This session and its successful work did not exist in the startup snapshot.\n\tctx := context.Background()\n\tif err := st.UpsertProvider(ctx, store.ProviderRecord{\n\t\tID: \"previous-session\", SerialNumber: \"reconnect-device\",\n\t\tSEPublicKey: identity.PublicKey, TrustLevel: \"hardware\", Attested: true,\n\t\tLastSeen: time.Now(),\n\t}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\twant := store.ReputationRecord{TotalJobs: 52, SuccessfulJobs: 50, FailedJobs: 2,\n\t\tTotalUptimeSeconds: 3600, AvgResponseTimeMs: 120, ChallengesPassed: 12, ChallengesFailed: 1}\n\tif err := st.UpsertReputation(ctx, \"previous-session\", want); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tmsg := &protocol.RegisterMessage{Type: protocol.TypeRegister, PublicKey: publicKey,\n\t\tAttestation: blob, Version: minProviderVersionForReconnectAttestation,\n\t\tBackend: \"mlx-swift\", Models: []protocol.ModelInfo{{ID: \"reconnect-model\"}}}\n\tts := httptest.NewServer(srv.Handler())\n\tt.Cleanup(ts.Close)\n\twsCtx, cancel := context.WithTimeout(ctx, 5*time.Second)\n\tdefer cancel()\n\tconn, _, err := websocket.Dial(wsCtx, \"ws\"+strings.TrimPrefix(ts.URL, \"http\")+\"/ws/provider\", nil)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tdefer conn.CloseNow()\n\tdata, err := json.Marshal(msg)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := conn.Write(wsCtx, websocket.MessageText, data); err != nil {\n\t\tt.Fatal(err)\n\t}\n\t// desired_models is sent after registration verification and state restoration.\n\tfor {\n\t\t_, data, err := conn.Read(wsCtx)\n\t\tif err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tvar message struct {\n\t\t\tType string `json:\"type\"`\n\t\t}\n\t\tif err := json.Unmarshal(data, &message); err != nil {\n\t\t\tt.Fatal(err)\n\t\t}\n\t\tif message.Type == \"desired_models\" {\n\t\t\tbreak\n\t\t}\n\t}\n\tp := findProviderByModel(reg, \"reconnect-model\")\n\tif p == nil {\n\t\tt.Fatal(\"registered provider missing\")\n\t}\n\tp.Mu().Lock()\n\tdefer p.Mu().Unlock()\n\tif p.Reputation.TotalJobs != want.TotalJobs || p.Reputation.SuccessfulJobs != want.SuccessfulJobs ||\n\t\tp.Reputation.FailedJobs != want.FailedJobs || p.Reputation.TotalUptime != time.Hour ||\n\t\tp.Reputation.AvgResponseTime != 120*time.Millisecond || p.Reputation.ChallengesPassed != 12 ||\n\t\tp.Reputation.ChallengesFailed != 1 {\n\t\tt.Fatalf(\"reconnect lost persisted reputation: got %+v, want %+v\", p.Reputation, want)\n\t}\n\tif p.TrustLevel != registry.TrustSelfSigned || p.MDAVerified {\n\t\tt.Fatalf(\"reconnect must re-earn hardware trust: trust=%s mda=%v\", p.TrustLevel, p.MDAVerified)\n\t}\n}\n\nfunc TestProviderReconnectDoesNotRestoreAnotherSEKey(t *testing.T) {\n\tlogger := slog.New(slog.NewTextHandler(io.Discard, nil))\n\tst := store.NewMemory(store.Config{})\n\tpublicKey := testPublicKeyB64()\n\tblob := createTestAttestationJSONWithSerial(t, \"shared-serial\", publicKey)\n\tctx := context.Background()\n\tif err := st.UpsertProvider(ctx, store.ProviderRecord{\n\t\tID: \"other-session\", SEPublicKey: \"different-signing-key\", SerialNumber: \"shared-serial\",\n\t\tAccountID: \"other-account\", TrustLevel: \"hardware\", LastSeen: time.Now(),\n\t}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\tif err := st.UpsertReputation(ctx, \"other-session\", store.ReputationRecord{TotalJobs: 99, SuccessfulJobs: 99}); err != nil {\n\t\tt.Fatal(err)\n\t}\n\treg := registry.New(logger)\n\tsrv := NewServer(reg, st, ServerConfig{}, logger)\n\tt.Cleanup(srv.Close)\n\tmsg := &protocol.RegisterMessage{Type: protocol.TypeRegister, PublicKey: publicKey,\n\t\tAttestation: blob, Version: minProviderVersionForReconnectAttestation}\n\tp := reg.Register(\"new-session\", nil, msg)\n\tsrv.verifyProviderAttestation(p.ID, p, msg)\n\tp.Mu().Lock()\n\tdefer p.Mu().Unlock()\n\tif p.Reputation.TotalJobs != 0 || p.AccountID != \"\" {\n\t\tt.Fatalf(\"different SE key inherited state: reputation=%+v account=%q\", p.Reputation, p.AccountID)\n\t}\n}\n" + }, + "capability": "linux", + "timeout_seconds": 600 + }, + { + "name": "coordinator", + "command": [ + "go", + "test", + "-race", + "-json", + "./coordinator/...", + "-count=1" + ], + "required_tests": [ + "github.com/eigeninference/d-inference/coordinator/store::TestPostgresProviderRecordStatsPersisted", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/memory", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyContract/postgres", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/memory", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyExcludesRegisteringSession/postgres", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/memory", + "github.com/eigeninference/d-inference/coordinator/store::TestProviderBySEKeyEqualTimestampsDeterministic/postgres", + "github.com/eigeninference/d-inference/coordinator/store::TestGetProviderBySEKeyReturnsDeepCopy", + "github.com/eigeninference/d-inference/coordinator/api::TestProviderReconnectRestoresMetadataAndReputationIndependently", + "github.com/eigeninference/d-inference/coordinator/api::TestFirstByteReachesClientWhileRegistryWriteLockHeld", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotLatchDoesNotWaitOnRegistryWriteLock", + "github.com/eigeninference/d-inference/coordinator/api::TestNoteServingSlotForPrimaryNoRegistryLock", + "github.com/eigeninference/d-inference/coordinator/api::TestNoteServingSlotForBackupPointerNoRegistryLock", + "github.com/eigeninference/d-inference/coordinator/api::TestKVBackendAttributionPromotedLatchMismatchNoRegistryLock", + "github.com/eigeninference/d-inference/coordinator/api::TestKVBackendAttributionGenuineFaultLiveWinnerNoRegistryLock", + "github.com/eigeninference/d-inference/coordinator/api::TestFrozenTerminalAttributionSurvivesReLatchNoRegistryLock", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/latch", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/nil/live", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/latch", + "github.com/eigeninference/d-inference/coordinator/api::TestServingSlotMissingOrMismatchedProviderNoRegistryLock/mismatched/live", + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation", + "github.com/eigeninference/d-inference/coordinator/api::TestFailoverProviderCleanupJoinsActiveScript", + "github.com/eigeninference/d-inference/coordinator/api::TestDeleteMyProvider_OnlineConflict409" + ], + "capability": "linux", + "timeout_seconds": 1800 + }, + { + "name": "docs", + "command": [ + "make", + "docs-check" + ], + "capability": "linux", + "timeout_seconds": 180 + }, + { + "name": "wire-fuzz", + "command": [ + "go", + "test", + "-json", + "./coordinator/protocol", + "-run", + "^FuzzInferenceErrorWireIsolation$", + "-fuzz", + "^FuzzInferenceErrorWireIsolation$", + "-fuzztime=5s" + ], + "required_tests": [ + "github.com/eigeninference/d-inference/coordinator/protocol::FuzzInferenceErrorWireIsolation" + ], + "capability": "linux", + "timeout_seconds": 600 + }, + { + "name": "provider", + "command": [ + "make", + "provider-test" + ], + "capability": "mac", + "timeout_seconds": 1800 + } + ], + "ci_rules": [ + { + "prefixes": [ + "coordinator/promptsidecar/" + ], + "checks": [], + "capability": "rust" + }, + { + "prefixes": [ + "coordinator/", + "go.mod", + "go.sum" + ], + "checks": [ + "coordinator" + ], + "capability": "linux" + }, + { + "prefixes": [ + "docs/", + "CHANGELOG", + "README", + ".forge/", + ".github/workflows/forge-ci.yml" + ], + "checks": [ + "docs" + ], + "capability": "linux" + }, + { + "prefixes": [ + "provider-swift/", + "libs/", + "e2e/" + ], + "checks": [ + "provider" + ], + "capability": "mac" + }, + { + "prefixes": [ + "console-ui/", + "admin-ui/", + "landing/" + ], + "checks": [], + "capability": "browser" + } + ] +} diff --git a/.forge/policy/manifest.json b/.forge/policy/manifest.json new file mode 100644 index 000000000..ae33eed56 --- /dev/null +++ b/.forge/policy/manifest.json @@ -0,0 +1,10 @@ +{ + "project_version": "2026-09-06.2", + "qualified_build": "5d81e2a55a6985766661ad392561da6606f654d4", + "files_sha256": { + "darkbloom.json": "ba20dcc5b17b943819699917919bf11e2bd283e7c33bb00f3f75d14044517688", + "skills/engineering.md": "727f1388c95649c92dbde03962dec3005192726958c8d333b745a0b1fba49930", + "skills/reputation.md": "aa7a38b8e729d8a82b8ac32dafb464038543c667ff10838ad6ef75336e188fca" + }, + "application": "Reviewed snapshot. Changes proposed here do not change accepted checks until Numinous reviews and deploys them." +} diff --git a/.forge/policy/skills/engineering.md b/.forge/policy/skills/engineering.md new file mode 100644 index 000000000..cb8f12fcd --- /dev/null +++ b/.forge/policy/skills/engineering.md @@ -0,0 +1,24 @@ +# Darkbloom engineering + +Read AGENTS.md and CONTRIBUTING.md before editing. Work only on the assigned scope. +Use isolated tests and the disposable local DATABASE_URL. Never contact production, +change versions, publish code, or obtain credentials. Preserve fresh attestation +requirements. Cover memory and PostgreSQL when changing persistence. + +Read actual source before choosing a fix. Reproduce reported failures. Keep regression +fixtures intact. Add meaningful edge-case tests. Update affected documentation and +run its checks. Record what changed, observed results, and remaining uncertainty. +A completed agent run produces a candidate; a separate worker verifies it. + +Trace every caller of a changed helper, including retries and speculative winners. +After provider handoff, use the matching retained provider for slot attribution; +a global registry lookup can block first-byte delivery behind unrelated writes. +Preserve frozen fault attribution. Force lock ordering in regression tests and +release synchronization gates on failure; repeated natural passes alone do not +disprove a concurrency bug. +Capture complete test output and the command exit status before displaying a +summary. Filtering to the last lines can discard the failing test and force an +expensive rerun just to recover the diagnosis. +Test fixtures own their asynchronous work: use distinct persisted and reconnecting +session identities, and cancel and join provider scripts before test teardown. +Preserve production assertions when repairing a flaky fixture. diff --git a/.forge/policy/skills/reputation.md b/.forge/policy/skills/reputation.md new file mode 100644 index 000000000..54c400a53 --- /dev/null +++ b/.forge/policy/skills/reputation.md @@ -0,0 +1,15 @@ +# Provider reconnect reliability + +Restore prior state only through the freshly verified Secure Enclave public key. +Serial numbers alone do not establish identity. A stale startup snapshot cannot +represent state earned after server startup. Exclude the registering session from +history lookup. Cover missing reputation rows and multiple reconnects. +Preserve fresh trust verification and avoid introducing unrelated routing changes. +Do not copy an old production patch; inspect the current implementation and solve +the failure demonstrated by the regression fixture. + +Device metadata and earned reputation can have different history rows. Select +the newest matching metadata independently from the newest matching reputation. +Use the same deterministic timestamp and ID ordering in both stores. Store +lookup results must not expose mutable persisted buffers to callers. Tests shared +by memory and PostgreSQL must actually run their PostgreSQL subtests. diff --git a/.github/workflows/forge-ci.yml b/.github/workflows/forge-ci.yml index 299ff9f3f..e1c367e8b 100644 --- a/.github/workflows/forge-ci.yml +++ b/.github/workflows/forge-ci.yml @@ -110,11 +110,12 @@ jobs: raise ValueError("CLI key and SHA must identify an immutable release") if key.split("/")[2] != expected: raise ValueError("CLI key and expected hash differ") - executable = Path(os.environ["RUNNER_TEMP"]) / "forge" + executable = Path(os.environ["RUNNER_TEMP"]) / "numinous-forge" subprocess.run(["aws", "s3", "cp", "s3://" + os.environ["FORGE_BUCKET"] + "/" + key, str(executable), "--only-show-errors"], check=True) if hashlib.sha256(executable.read_bytes()).hexdigest() != expected: raise ValueError("CLI checksum mismatch") executable.chmod(0o700) + print(f"CLI: {executable.name}; SHA-256: {expected}", flush=True) url = f"https://github.com/{REPOSITORY}/actions/runs/{os.environ['GITHUB_RUN_ID']}" status_context = "Numinous Forge / verification" if pr else "Numinous Forge / baseline" diff --git a/README.md b/README.md index 056abf689..058ca2037 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Darkbloom +> **Numinous Forge demonstration fork.** See [the engineering workflow and recorded examples](.forge/README.md). Upstream is [Layr-Labs/d-inference](https://github.com/Layr-Labs/d-inference). + > **Public Alpha** — Darkbloom is a decentralized private-inference network for Apple Silicon. Expect rough edges, breaking changes, and downtime. Alpha pricing, the platform fee and payout rules are stated once, in [billing](docs/architecture/billing.md#invariants). Darkbloom turns idle Macs into a private, OpenAI-compatible inference cloud.