[Phase 7] schemas/conventions/MegaTask/API fixes (15 findings, scan-fix program)#321
Merged
Merged
Conversation
…silent AGENT fallback)
…uard + result sidecar)
…,L27,L14,L28,H19,M13,M14,H20,M16,M45,L25,M15,L24)
…001), hoist AuditLogTable import (PLC0415)
|
Thanks for opening your first pull request on RoboCo! Quick checklist before review (most of these are enforced by CI, but worth a glance):
See CONTRIBUTING.md for the full workflow and the Code of Conduct for the community standards we follow. Welcome aboard — a maintainer will review shortly. |
…the GrokCliProvider
…reflects grok agents
…ep so live cost reflects Anthropic cache spend
…ud 429 parks instead of crash-respawning
…ens roll into usage/cost summaries
…r's revisit counter survives a restart
…rates after 2026-08-31
…ilently falling back to a zero-usage env id
…ken-sweep test signatures)
…ck stays reachable
… tokens are bounded
…ry so a stolen cookie's exp is fixed
…t revokes the current jti
…w + jti revocation
[phase9] Auth hardening: bound agent tokens (iat/exp) + JWT jti revocation
[scan-fix] Phase 8: LLM providers / usage / billing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 7 of the 9-phase codebase-scan fix program (serial, stacked). Do not merge independently — the CEO merges all 9 PRs bottom-up to
masterafter the program completes. This PR stacks on Phase 6 (#320,fix/scan-panel-frontend).Scope
15 audit findings fixed across the API schemas, the architectural-conventions standard, the MegaTask confirm-batch path, and the roadmap cycle-completion audit:
DelegateRequest.estimated_complexityretyped asComplexityenum (whitelist validator); redundant int-rejector deletedSoftBlockRequest.resolver_typeretyped asBlockerResolverType(422 on typo);try/except → AGENTsilent downgrade +resolver_type_rawdeletedTaskResponse.documentsfield +convert_documentshelper (defensive.get)SubstituteRequest.suggested_role/suggested_team(zero consumers)Envelope.not_foundgains a defaultremediate(mirrorsnot_authorized)ListResponse[T]generic (per-domain*ListResponsepreserved)_delegate_static_guardsadmits a cell-projects coordination root (narrow clause, not the broadis_branchless_coordinationpredicate)confirm_live_batchRedis SETNX idempotency guard + result sidecar (keyed bysession_id); fail-closed on redis-unreachableassigned_toso an injected board-role uuid can't deadlock the umbrellathin_routesreceiver-gatesadd/add_all/merge(only trips on a session-handle receiver);seen_tags.add/cache.addno longer false-positive_NOQA_CODEScapture tightened to[A-Z0-9, ]+; sanctioned# noqa: TC001 because …no longer false-blockedensure_read_clone(force=True)fromresolve_workspace— force-fetches the read clone on every conventions read, closing the 30s stale-map window after a default-branch mergeConventionsService._resolvereturns raw(root, sha); the three callers mutate ORM on the event loop (was mutating off the event loop on a worker thread — unsafe under SQLAlchemy 2 async). Faithful port preserves theif sha is not Noneguard + thehead = sha or _head_sha(project)cache-key/health fallbackopen_conventions_prforce-pushes the disposable scaffold branch (--force-with-lease); a second conventions edit no longer silently opens nothingRoadmapService._maybe_complete_cycleemits atask.completedaudit row via the canonical chokepoint (was a directtask.status =set — invisible to Delivery observability)Plus a CHANGELOG commit and a trailing lint gate-hygiene commit. 17 commits, 35 files, +1220/−130.
Audit-drift resolutions (deliberate deviations from the plan's literal text)
open_conventions_pr" to force-fetch ON READ —open_conventions_propens a scaffold-branch PR, it does not advance the default-branch HEAD, so tying the refetch to it would not close the stale window. The sha-keyed cache handles the rest (nocontent_hashmigration).head_commitfor non-git paths and break the cache key / healthhead_sha).cell_projectsclause, not the broadis_branchless_coordinationpredicate.x_engine/video_postcompletion sites are out of scope.Gate
Green:
ruff format+ruff checkclean across the repo;mypy roboco/clean (358 files);pytest12014 passed / 418 skipped / 95% coverage.Reviews
get_mapcaller routes throughresolve_workspace) was resolved: every read-path caller (project.py:471,_base.py:339,task.py:1162) routes through it; theworkspace=Nonecallers are write/create-path only. The twoconventions.pyfixes (M45 + L25) compose cleanly; M13+M14 inprompter.pydon't conflict.Deferred e2e note (M13)
The plan's "real Redis e2e" for M13 is infeasible —
tests/e2e_smoke/harness.pyprovisions no Redis. The SETNX guard + sidecar are unit-tested with a_FakeRedis/_BoomRedispatch overredis.from_url(mirroringtest_heartbeat_mutex.py). Adding Redis to the e2e harness is a separate infra lift, out of scope for this fix program.Merge
CEO merges bottom-up after all 9 phases. This PR retargets to
masteronce Phase 6 (#320) merges.