mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
feature/main_pm/6e2af177
11
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0a80250f64 |
[4e9facf0] Backend: audit and close open blocker-severity findings (#732)
* [3b015e7a] docs(audits): add backend blocker-finding audit report for 2026-07-29 (#720)
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
* [92ed9263] docs(audits): rename blocker-findings audit to 07-30 and patch 4 PR-review findings (#733)
Rename docs/audits/backend-blocker-findings-2026-07-29.md to the
-2026-07-30.md filename to match the actual land date, and resolve all
4 open in-path PR-review findings on assembled PR #732:
- F-a0b37f15 (nit): corrected filename + H1 date
- F-8684d580 (minor): Scope section now states the triage denominator
(3 non-terminal tasks) and method (triage() + recent_team_activity)
- F-44b4c68d (minor): Lifecycle-wiring section now carries an explicit
verdict sentence plus a state line for finding 53ce191d
- F-505eec92 (major): Next-step section now names be-pm and be-dev-1 as
the accountable owners driving a9a030d8's resubmit and the
verifying pr_pass
Docs-only, single file, no behavior change.
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
* [e67c115d] docs(audits): update Next-step section with round-2 pr_gate fixes (#759)
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
* [d5213754] docs(audits): cite real be-pm DM and 62845be1's live status in blocker-findings audit (#764)
Closes round-3 pr_gate findings F-6541a018 (major) and F-fc3ed124 (minor)
on docs/audits/backend-blocker-findings-2026-07-30.md: lines 40-42 now
cite be-pm's real 2026-07-31 DM to be-pr-reviewer (PR #718, finding
53ce191d, dependency task 261e7585) instead of an unverifiable
'notified/assigned' claim; line 46 states task 62845be1's real live
status (assigned to be-doc, awaiting_documentation, as of 2026-07-31
12:48 UTC) instead of a stale 'unassigned' claim.
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
* [f70d0e09] docs(audits): fix round-3 pr_gate findings fc3ed124 + 6541a018 on blocker-findings audit doc (#767)
Co-authored-by: Backend Developer 2 <be-dev-2@roboco.tech>
* [f641f5e4] docs(audits): patch backend-blocker-findings doc round-4 (finding-id staleness, next-step contradiction, DM overclaim) (#771)
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
* [b72fd525] docs(audits): reconcile blocker count and refresh d4d255d1 status (#774)
Fixes round-5 pr_gate findings on docs/audits/backend-blocker-findings-2026-07-30.md:
- F-39c54d96 (major): the Finding section now names both blockers that
surfaced during the audit window (4e4ef942, d41b9bc7) and explains that
d41b9bc7 was addressed+verified when task d4d255d1 reached completed
(a task cannot complete while carrying an open QA-origin blocker), so
the doc's headline count and the second unowned finding no longer
contradict each other.
- F-522e05f6 (major): the Next-step section's d4d255d1 status is refreshed
from stale "blocked, needs unblock" to its actual completed state, and
the second hard-wrapped file it also fixed is named. Added an hh:mm UTC
as-of stamp to the one remaining unstamped live-status claim in that
section.
Doc-only, no behavior change. Verified scripts/reflow_md.py --check and
make lint (ruff format/check + mypy + vulture) both pass clean.
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
* [faf7f7d4] Patch audit doc: apply completion-closes-blocker rule to a9a030d8, refresh stamp (#787)
* [fad8bdae] Patch backend-blocker-findings-2026-07-30.md per round-6 pr_gate findings (#783)
* [fad8bdae] docs(audits): refresh submission-time stamp on blocker-findings audit
Round-6 pr_gate findings F-6a08ba77 and F-26ea122e are addressed:
the doc already applies the completion-closes-blocker rule
consistently to both d41b9bc7 and 4e4ef942 (zero open BLOCKER
findings), states the a9a030d8/4e4ef942 closure as an inference
from completion mechanics rather than a direct ledger read, updates
the Next-step section to a9a030d8's actual completed status with no
stale hand-off framing, and notes the live evidence()/kb_search
timeout hit while re-verifying this round. This commit refreshes the
doc's two self-referential submission-time stamps from the stale
2026-08-01 00:54 UTC to the actual commit time, 2026-08-01 01:05 UTC.
* [fad8bdae] docs(audits): reconcile Scope/Finding contradiction and hedge a9a030d8 closure per round-6 findings
F-600347a7 (blocker): Scope section (line 7) still listed a9a030d8 as
non-terminal while the Finding/Next-step/Lifecycle sections asserted it
completed. Reconciled by pointing the Scope line forward to the Finding
section instead of duplicating stale status.
F-4090b287 (major): 4e4ef942's closure rested entirely on corroborations
(be-pr-reviewer's briefing, be-pm's evidence() timeouts, a sibling task's
indirect clearance) with no direct ledger read. Rewrote the Finding
headline, the Next-step hand-off, and the Lifecycle-wiring-gap verdict to
present this as an inference pending direct confirmation ("likely zero"
open BLOCKER findings) rather than a confident settled fact, and replaced
"no further hand-off needed" with a concrete follow-up: confirm 4e4ef942's
ledger status directly once the evidence()/roboco_kb_search read path
recovers. I independently reproduced that same timeout this round while
trying to verify a9a030d8 directly, corroborating the doc's own claim.
Also refreshed the self-referential submission-time stamp to this round's
actual commit time.
* [fad8bdae] docs(audits): fix line-11 submission-time stamp to match actual commit time
F-602b0170 (blocker): the line-11 self-referential stamp read
"2026-08-01 02:47 UTC" but the last commit touching that line
(
|
||
|
|
ef8849b0cd | sync: master → slave | ||
|
|
df5c8c75b3 |
[ce82d7a1] UX/UI: audit and close open blocker-severity findings (#736)
* [c77c3e89] docs(ux_ui): add blocker-findings audit report and link from README (#735) Document ux-pm's three triage passes (2026-07-29/2026-07-30) confirming zero open BLOCKER-severity findings on ux_ui tasks, per the Sentinel [findings] org-wide audit root. Co-authored-by: UX/UI Developer 1 <ux-dev-1@roboco.tech> * [45478af5] fix(docs): reflow blocker-findings audit prose and clarify triage date span (#737) Co-authored-by: UX/UI Developer 1 <ux-dev-1@roboco.tech> --------- Co-authored-by: roboco-app[bot] <302741806+roboco-app[bot]@users.noreply.github.com> Co-authored-by: UX/UI Developer 1 <ux-dev-1@roboco.tech> |
||
|
|
1d2e8c6474 |
[e8daa1e6] Frontend: audit and close open blocker-severity findings (#727)
* [dae66a7f] docs(frontend): add 2026-07-29 blocker-findings audit report (#724) Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> * [9a9cbb14] docs(frontend): fix 3 pr_gate findings on blocker-findings audit report (#729) Add the audit doc to README's Available docs index, replace the unsupported CLA-CI lifecycle citation with a plain no-evidence statement, and add an auditable Triaged section naming the two triage() calls and their approximate timestamps. Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> * [e0f05e44] Sync branch onto master and fix audit-doc wording nit (#730) * [e0f05e44] docs(frontend): fix present-tense wording in blocker-findings audit report * [e0f05e44] docs(frontend): reflow hard-wrapped paragraphs in blocker-findings audit report make reflow-check (part of make quality, the local equivalent of the GitHub 'Python quality gate' job) was failing because several paragraphs in docs/frontend/blocker-findings-audit-2026-07-29.md were hard-wrapped across multiple lines instead of the repo's one-line-per- paragraph markdown convention. Ran make reflow-docs to collapse each paragraph to a single line; no prose content changed. --------- Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> --------- Co-authored-by: roboco-app[bot] <302741806+roboco-app[bot]@users.noreply.github.com> Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> |
||
|
|
e1f5e0950e | sync: master → slave | ||
|
|
66f0287d11 |
[3e7a5064] Eval harness: wire the real-spawn path so python -m roboco.eval run works end-to-end (#703)
* [431e73b7] Wire the real-spawn path: OrchestratorStageSpawner + disposable MCP config (#701)
* [431e73b7] Wire the eval harness real-spawn path: OrchestratorStageSpawner + disposable MCP config
_generate_mcp_config now prefers settings.api_url when set (both
PROJECT_HOST_PATH branches), so spawned MCP servers resolve to the
harness's disposable orchestrator URL instead of the real production
hostname or 127.0.0.1:port. OrchestratorStageSpawner.__init__ replaces
the NotImplementedError with a real AgentOrchestrator() constructed the
same way the production dispatcher builds it. The runner module
docstring + __main__.py docstring/run-subparser help drop the
NOT-YET-FUNCTIONAL wording. A new unit test pins the no-production-reach
guarantee: with settings.api_url patched, the MCP config's
ROBOCO_API_URL/ROBOCO_ORCHESTRATOR_URL point at the disposable URL (not
production), and the agent UUID is the real fixed UUID from
foundation.identity.AGENTS.
* [431e73b7] docs(eval): reflect the wired real-spawn path in tests map, CLAUDE.md, and CHANGELOG
---------
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
Co-authored-by: Backend Documenter <be-doc@roboco.tech>
* [5cc75f71] Fix disposable orchestrator container-reachability + document real-UUID isolation design (#705)
* [5cc75f71] Fix disposable orchestrator container-reachability + document real-UUID isolation
* [5cc75f71] docs(eval-harness): document container-reachability fix + real-UUID isolation in map docs
---------
Co-authored-by: Backend Developer 1 <be-dev-1@roboco.tech>
Co-authored-by: Backend Documenter <be-doc@roboco.tech>
* [d96ec059] Rewrite stale eval-spawner pinning test to assert wired behavior (test-only, CI-green for PR #703) (#707) (#708)
* [d96ec059] test(eval): assert OrchestratorStageSpawner constructs a real AgentOrchestrator
Rewrite the stale pinning test that asserted the PRE-wiring
NotImplementedError (removed by commit
|
||
|
|
b3dda00e41 |
[d700055f] Replace StubObjectivesSection with live charter objective cards (#702) (#704)
* [d700055f] feat(scorecard): replace StubObjectivesSection with live charter objective cards Delete the StubObjectivesSection placeholder (fake 'Revenue growth'/'Customer retention' labels) and render a real ObjectivesSection with three positional charter objective cards, each showing its live metric against its target: first_pass_yield (90%), median_lead_time_hours (<24h), escaped_defects (0). - CockpitSummary: add optional first_pass_yield and escaped_defects fields (backend companion item not yet shipped; UI renders 'No data yet' until then) - ObjectivesSection: positional mapping objectives[i].metric -> metric i, documented as a positional-by-convention assumption; canonical fallback labels when the charter objectives array is empty/shorter than 3; 'No data yet' italic muted fallback for null/undefined metrics (SpeedSection pattern); DeliveryMetric card styling; first_pass_yield formatted as pctOrDash does - SpeedSection kept as-is; ObjectivesSection references the same median_lead_time_hours value as a peer card alongside the other two - Tests: buildSummary carries the new fields; cover present/missing metrics and absence of the fake stub labels; existing lead-time/null tests adjusted for the now-shared value and multi-card 'No data yet' * [d700055f] docs(scorecard): document live ObjectivesSection and new CockpitSummary fields Add panel/docs/frontend/company-scorecard-card.md covering the new ObjectivesSection: the three positional charter objective cards (first_pass_yield 90%, median_lead_time_hours <24h, escaped_defects 0), the positional-by-convention mapping, canonical fallback labels, the 'No data yet' fallback pattern, and the two new optional CockpitSummary fields with the backend companion-item caveat. Add a Key Symbols row for CompanyScorecardCard/ObjectivesSection in docs/map/panel.md. --------- Co-authored-by: roboco-app[bot] <302741806+roboco-app[bot]@users.noreply.github.com> Co-authored-by: Frontend Developer 2 <fe-dev-2@roboco.tech> Co-authored-by: Frontend Documenter <fe-doc@roboco.tech> Co-authored-by: Frontend PM <fe-pm@roboco.tech> |
||
|
|
cbddfc7cb3 |
[c71959c3] Video: release 0.27.0 (#698)
* [c71959c3] feat(motion): add release-0.27.0 panel-demo clip Extends the panel-demo kit register (kit/) with a v0.27.0 release composition: identity cold open, four feature cards (WAF real-IP resolution, Telegram Mini App V6, Codex/Gemini providers, cost-tiered routing) flipping from in-progress to completed, a camera that pushes per beat via pk-camera data-shots, a cursor that clicks and travels via pk-cursor data-waypoints, a receipt stats overlay, a shipped toast, and the roboco.tech outro. Ships vertical.html, square.html, props.js, captions.json, and a vitest smoke test mirroring release-0.26.0's invariants. * [c71959c3] fix(motion): implement genuinely non-uniform card-beat gaps in release-0.27.0 clip The four .pk-card animation-delay values were uniform 5.0s/10.0s/15.0s/20.0s in both vertical.html and square.html -- byte-for-byte identical to release-0.26.0's metronomic spacing the craft bar bans -- despite the prior decision_log claiming 5.5s/6.4s/5.3s varied gaps had been added. Card delays are now 5.0/10.5/16.9/22.2 (real 5.5s/6.4s/5.3s gaps). Camera data-shots, cursor data-waypoints, and the stats/toast/outro tail in both files are re-warped with a shared piecewise-linear time function anchored at each card's new beat, so nothing desyncs and the tail still fits inside the fixed 40s runtime. Added a regression test asserting the four card gaps are not all identical. * [c71959c3] docs(motion): add release-0.27.0 composition section to README --------- Co-authored-by: UX/UI Developer 1 <ux-dev-1@roboco.tech> Co-authored-by: UX/UI Documenter <ux-doc@roboco.tech> |
||
|
|
29243771e4 | sync: master → slave | ||
|
|
9d39005c58 |
[73275ff0] Panel consistency & UX wave: forms audit, command palette, kanban merge, responsiveness (#694)
* [170c9578] Frontend: Panel consistency & UX wave (forms audit, command palette, kanban merge, responsiveness) (#688) * [f1957610] Stream1-A: Project form sync (#667) * [f1957610] feat(panel): expose codegen_command in create-project dialog Add the Codegen Command input to create-project-dialog.tsx, mirroring the field already present in edit-project-dialog.tsx. All other fields named in this task (git_provider, github_installation_id, environments, protected_branches, video_engine_enabled, monthly_budget_usd with gt=0 client validation, sandbox_extensions) were already implemented on this branch's base by prior work, and the ProjectCreate/ProjectUpdate types in types/index.ts already match the backend ProjectCreateRequest/ProjectUpdateRequest schemas exactly -- no further changes were needed there. * [f1957610] docs(forms): add project-fields-audit reference for future field consistency Create a living audit of which project configuration fields are exposed in the create vs. edit dialogs, mapping to the backend ProjectCreateRequest/ProjectUpdateRequest schemas. This serves as a future reference to prevent field-sync gaps and documents the intentional asymmetry (create focuses on git setup, edit adds autonomy/maintenance toggles). Includes a checklist for adding new project fields in the future. --------- Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> Co-authored-by: Frontend Documenter <fe-doc@roboco.tech> * [515697f4] feat(panel): settings save feedback + forms-audit.md living reference (#669) Add per-toggle confirmation toasts to the four Settings-page prefs (notifications, sound, auto refresh, refresh interval) so an immediate write is never indistinguishable from a silent failure. These prefs stay on the already-shipped client-persisted useUIStore pattern (CHANGELOG.md "Settings preferences persist as real client prefs instead of 422-ing as theater") rather than settingsApi, since the backend _VALIDATORS allowlist deliberately excludes them and the parent task scoped this stream as needing no backend schema changes. Check in docs/forms-audit.md: a living form x field x verdict table covering Stream1-A (project dialogs), Stream1-B (task dialogs), and this settings work, with a header note that future backend schema changes require a row update. Fixes the project-slug help text (now correctly says letters/numbers/hyphens, not just hyphens). Co-authored-by: Frontend Developer 2 <fe-dev-2@roboco.tech> * [80a215a4] Stream2-A: Command palette component (#670) * [80a215a4] feat(panel): Cmd+K command palette component Radix Dialog + combobox pattern searching tasks/agents/projects/pages, localStorage recents under roboco-cmd-recents, keyboard nav (arrows/ Enter/Escape), mounted globally in the dashboard layout. * [80a215a4] fix(panel): restore fields dropped from ui-store.ts by prior merge Stream1-C's merge stripped notificationsEnabled, soundEnabled, autoRefresh, refreshIntervalSeconds, a2aContextOpen, quickActionIds, productsView, and projectsView from the shared UI store, breaking typecheck for settings/quick-actions/products/projects/a2a/notification consumers repo-wide. Restored per already-committed tests + consumers. * [80a215a4] docs(panel): add command palette reference guide Documents the global Cmd+K search feature: usage (keyboard shortcuts, search categories, recents), architecture (CommandPalette component, useCommandPalette hook, fuzzy-match and recents helpers), data flow, and verification against live API data. --------- Co-authored-by: Frontend Developer 2 <fe-dev-2@roboco.tech> Co-authored-by: Frontend Documenter <fe-doc@roboco.tech> * [cdc371d1] Stream4-A: Responsiveness audit and fix — wide-content pages (#671) * [cdc371d1] fix(panel): bump Button sm size to 36px touch-target floor Button's size="sm" variant was h-8 (32px), used as literal row-action buttons on the overview page's CEO Approval/PR Review queues and other controls across settings/metrics/agents/a2a. Bump to h-9 (36px) to meet the touch-target floor everywhere at once, keeping the smaller horizontal padding/gap intact for visual density. * [cdc371d1] fix(panel): make AlertDialog scroll its body at short viewport heights AlertDialogContent lacked the max-h-[85vh]/overflow-y-auto that the sibling DialogContent already has, and AlertDialogFooter lacked DialogFooter's sticky bottom-0 pinning. A tall description at a short viewport height (mobile landscape) could clip the action buttons off screen with no way to reach them. Affects the settings page's GitHubAppCredentialsCard/FeatureFlagsCard confirm dialogs (and every other AlertDialog app-wide). Ports DialogContent's already-solved scroll pattern onto AlertDialogContent/Footer. * [cdc371d1] fix(panel): wrap Scorecards Members table in ResponsiveTable metrics/scorecards-tab.tsx's 9-column Members table was a bare <Table> with no mobile-card fallback, unlike its sibling tables in the same file (Rework, SpawnWaste) and sessions-table.tsx, which already use the established ResponsiveTable wrapper. Add a MemberCard component and wrap the table so it stacks as cards below md instead of forcing a cramped in-card horizontal scroll on a 375px viewport. --------- Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> * [b25fca69] Stream2-B: Header integration for command palette (#675) * [b25fca69] Wire header search into Stream2-A command palette: click trigger via useUIStore.setCommandPaletteOpen, remove disabled input and Coming Soon tooltip remnants * [b25fca69] Wire header search into Stream2-A command palette: click trigger via useUIStore.setCommandPaletteOpen, remove disabled input and Coming Soon tooltip remnants --------- Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> * [e4ce5b9a] Stream3-A: Tasks page List|Kanban tabs + kanban embed (#674) * [e4ce5b9a] feat(tasks): add List|Kanban tabs to tasks page sharing URL filter state Add top-level List|Kanban Tabs above the tasks page filter bar. List tab renders the existing TaskFilters+TaskTable unchanged; Kanban tab embeds the existing DevKanban/QaKanban/PrReviewKanban/PmKanban views via nested sub-tabs (dev/qa/pr-review/pm), mirroring the standalone /kanban page's own tab styling (tooltip-wrapped triggers, pickTab helper). Both tabs read/write `tab`/`view` query params through the page's existing updateParams pattern, so all filters persist across tab switches. The four kanban view wrappers gain an optional controlled team/onTeamChange pair so the team filter is shared bidirectionally with the List tab's team filter, while staying backward compatible (uncontrolled, initialTeam-only) for the standalone /kanban route. KanbanBoard's dnd-kit drag-and-drop and mobile single-column navigation are untouched. * [e4ce5b9a] docs(tasks): add tasks-page-tabs.md documenting List|Kanban tab structure and shared filter state --------- Co-authored-by: Frontend Developer 2 <fe-dev-2@roboco.tech> Co-authored-by: Frontend Documenter <fe-doc@roboco.tech> * [18c52802] feat(panel): redirect /kanban to Tasks kanban tab, remove sidebar entry, swap bottom tab bar to Agents (#679) Co-authored-by: Frontend Developer 1 <fe-dev-1@roboco.tech> * Stream4-B: Responsiveness fixes — remaining dashboard pages (#676) * [fee25542] fix(a11y): bump sub-36px icon-sm touch targets to 36px on remaining pages Both kb-search-bar.tsx (Knowledge Base search clear button) and self-hosted-section.tsx (Settings token show/hide button) used Button size="icon-sm" (32px) for an absolutely-positioned input adornment, below the 36px minimum touch-target size. Bumped both to size="icon" (36px, matching the 36px input height) and adjusted the absolute-position offset so the button still sits fully inside each input's existing right padding reservation. Audited every remaining dashboard page (everything Stream4-A's wide-content/table fixes didn't already cover): no un-wrapped wide tables remain (every <Table> already rides ResponsiveTable), and every DialogContent across the repo already inherits or supplies max-h-[*vh] + overflow-y-auto, so dialogs stay usable at small viewport heights. * [fee25542] fix(a11y): re-land sub-36px touch target and overflow fixes after sync_branch reset them again Re-applies the fda2ac0c fix content a third time -- sync_branch's rebase+force-push reset the branch and working tree back to the stale |
||
|
|
e1ae58489c | sync: master → slave |