Conversation
Restore four public smokes that drifted from shipped behavior: - install-local and blocker-push asserted the pre-loopx-project#4302 closeout line; the task body now says `guard; 2 stalls->replan`. - heartbeat-prompt measured the full prompt against the bare interface budget, ignoring the Reward Memory headroom loopx-project#4333 reserves, and asserted closeout, brief and documentation wording that loopx-project#4296 replaced. - capability-gate-projection imported three private helpers that loopx-project#4254 moved into the typed TypeScript rule owner; it now reads the public gate. The Reward Memory contract is an opt-in Goal policy derived from the goal registry, so the smoke's in-process comparisons opt out explicitly instead of relying on the builder default that in-process callers share. Signed-off-by: song <liusongstep@gmail.com>
resolve_agent_capabilities re-read the goal registry file to obtain the registered-agent roster, so a relative or unreadable registry path silently emptied it and the typed handler rejected the read-only observation as an unregistered agent. quota should-run then failed with an internal runtime error instead of returning a capability projection. The resolved identity already carries the authoritative roster; pass it through. Roster entries are agent ids, not capability tokens, so they keep agent-id normalization. Signed-off-by: song <liusongstep@gmail.com>
…lign monitor identity Restore the remaining public smoke contracts that depend on module budgets, command classification and monitor-poll identity reporting: - agent-capabilities and handoff are registered but unclassified; both are command-specific help surfaces, so they join the existing help-only set. - project_lifecycle, quota and support_control each grew past the 1000-line budget. Extract three cohesive owners: the reward overlay registration, the honest quota failure/validation payloads, and the chat/dashboard pair. - todo-user-gate readmodel and monitor-poll writeback assertions predate the native presentation ordering and the identity-preserving rejection report. quota-plan, status-markdown and capability-gate also pass now that the capability observation no longer fails on an unresolved roster. Signed-off-by: song <liusongstep@gmail.com>
The fresh-clone quickstart asserted top-level quota_guard_command and quota_spend_command fields that the thin agent-input projection intentionally omits: the guard command is embedded in the task body and the spend command arrives in the quota response's next_cli_actions. Signed-off-by: song <liusongstep@gmail.com>
The three extracted CLI owners left their former modules with imports that only the moved code used. Remove them and let Ruff sort the remaining blocks; the pre-existing broad-exception handlers are unchanged. Signed-off-by: song <liusongstep@gmail.com>
Contributor
Author
|
Closing as superseded: #4355 landed the same fleet restoration while this PR was in flight, covering the smoke contract realignments, the Two notes for the record:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Behavior
Full Public Smokeshas been red onmainfor two days (no successful run in the last ~100), with 20+ scripts failing per shard sweep. This restores the fleet by fixing one production regression and realigning the smoke contracts that drifted behind merged behavior changes. Locally 9 of the 12 first-failing scripts pass after this PR; the remaining three are listed under Boundaries.Production fix
resolve_agent_capabilitiesre-read the goal registry file to obtain the registered-agent roster before the capability-memory observation. A relative or unreadable registry path silently emptied that roster, the typed handler rejected the read-only observation as an unregistered agent, andquota should-runfailed withEffectRuntimeInternalErrorinstead of returning a projection. The resolved identity already carries the authoritative roster, so it is passed through; roster entries keep agent-id normalization (they are not capability tokens).Contract realignments
install-local,blocker-pushandheartbeat-promptasserted the pre-fix(heartbeat): recover unsettled host turns #4302guard receipt; 2 stalls->replanline.INTERFACE_BUDGET_CHARSceiling; production budgets add the 640-char outcome-contract headroom when the marker is present. The fixtures now mirrorbuild_interface_budget, and in-process comparisons against CLI output opt out of the Reward Memory contract explicitly, because the CLI derives it from the goal registry (absent means off).capability-gate-projectionimported three private helpers that moved intocapability_gate.ts; it now reads the public gate. The requirement-ordering case now correctly expects no gate when no candidate declares a requirement.todo-user-gate-readmodelpinned a display order that native records without a v0 wire coordinate no longer have; the lane membership assertion is order-independent.Module budgets and classification
agent-capabilitiesandhandoffwere registered without a manual/help-only classification; both are command-specific surfaces and join the help-only set. Three cohesive owners are extracted to return their modules under the 1000-line budget:quota_failure_report.py(honest failure/validation payloads, moved verbatim),support_control_chat.py(chat + dashboard registration),project_lifecycle_reward.py(reward overlay registration).quota.py1118→928,support_control.py1015→889,project_lifecycle.py1014→963.Validation
test_quota_settlement_cli57 passed, heartbeat prompt suites 44 passed, capability-memory CLI tests 3 passed (run via importlib against the repo checkout), shadow/lease suites unaffected.Boundaries
turn.py(1,114 lines) exceeds the budget onmainbefore this PR; it is a single large handler and pin-vs-extract is a maintainer decision this PR does not take.configure-goal-smokeneeds a completereward_memory_experiment_config_v1fixture since the enablement preflight landed; that is a corpus-contract decision, not an assertion drift.monitor-poll-writeback's capability-declaration parity case fails identically on unmodifiedmainand is not addressed here.