For Agents
Reverse-chronological session log. Newest entries at top, grouped by date (
## YYYY-MM-DD). Each bullet: one piece of work, short summary, wikilinks to docs touched. Updated byobsidian-documenteron every project doc write. Read byhistorianat bootstrap (top ~15 entries).
2026-05-26
- Investigation captured (diagnosed, not fixed):
ErrorWithStepStatus::log(status, message)returned from any flow step silently dropsmessageat the parent log site.StepResult::log()(mando-lib/src/workflow/mod.rs:150-229) destructures theLogvariant with..(lines 155-159), droppingmessage; only the generic wrapper string +flow.step.status+flow.step.execution_timereachtracing::error!/warn!(lines 196-225).Displayimpl (mod.rs:443) is#[error("status: {status}")]— message also dropped from stringification.status_or_error(mod.rs:231-239) collapsesLog→Ok(status), losing it again. Top-level catch atmando-bess/src/workflow/flow.rs:289only sees"status: Error".Error(anyhow)arm is correctly logged viaerror!(mod.rs:160-171) — only::Logis broken. Tests atmod.rs:548-605assert level + wrapper string only, nevermessagepayload — how the regression shipped. Affects all environments. Possible overlap with follow-up commitsc945514e,4c543cb1,567373a5,63d6fa69,8f9297e4onfeature/BE-2272— diff before patching. Secondary:mando-lib/src/app/dd_formatter.rs:122-124record_errorusesvalue.to_string()(Display only), but niche path. → flow-step-log-message-dropped-2026-05-26. - mando-cli session: triaged Gabi’s 2026-05-25 bug report against v0.4.0 compose-runtime rewrite (commit
6ba0d61). Both reported bugs CONFIRMED real. (1)src/runtime/templates/runconfig/build.yml:11+build_dev.yml:18usecontext: .— Compose resolves relative paths from the compose-file’s parent dir, so context becomes<project>/runconfig/(no Dockerfile). Fix:context: ... (2) Mocked runconfig —mocked.ymlonly defines<service>-mocks, butup.rs:192passes bare slug; reporter’s diagnosis was incomplete — the exact “Must specify either image or build” error originates inrender_override(templates.rs:298-325) which emits a malformed<service>:stub perdocker_targetinto.mando/override.builtin.yaml. The stub is normally dormant viaprofiles: ["{run_tag}"](templates.rs:317) — that’s a load-bearing invariant. Cleanest fix: rename positional arg AND skip mocked entries in override generation. Smoke-test round (8de8f64) missed both: Bug 1 masked by image cache; Bug 2 not exercised withmando-mocked-algosset as default profile against fresh checkout. Fixes not yet committed. → mando-cli-v0.4.0-compose-bugs-triage-2026-05-26.
2026-05-22
- mando-cli session: documented the local macOS (Apple Silicon) cross-compile recipe for producing a Linux x86_64 / WSL release binary of
mandov0.4.0. Targetx86_64-unknown-linux-musl(static-pie). Two gotchas captured: (1) Docker pulls the arm64 image on Apple Silicon →ring 0.17C build fails withcc1: unrecognized command-line option -m64→ fix is--platform linux/amd64; (2) optionalqueryfeature has path deps into../mando/.worktrees/BE-1595/*that Cargo reads during resolution even when disabled → must mount thepoc/parent dir. Verified binary inubuntu:24.04+alpine(mando --version→mando cli 0.4.0). Distinct from the CI build mirror; cross-linked both ways. → mando-cli-wsl-linux-build.
2026-05-18
- Investigation captured (diagnosed, not yet fixed): Calculated and Virtual DPs leak rows past
toin all four retrieval methods (retrieve/retrieve_at/retrieve_history/retrieve_client). Root cause inMandoServiceBase::handle_data_point_types(mando-lib/src/service_base.rs:94-159) — Virtual/Calculated branches lack a finalfilter_data_frame_by_rangeafter Polars transformations. Two leak mechanisms: (A)convert_to_metadataupsampling explodes 1 row → N (convert_resolution.rs:39-95); (B)evaluate_expressionFull-join/concat-group_by produces union of dep timestamps (evaluation.rs:62-72, 175-178).EvaluationMetaData.rangeis plumbed but only consumed byFillMissing. Proposed fix: trim per-DP at final Virtual/Calculated branches usingevaluation_metadata[&dp_id].range. → calculated-virtual-dp-range-cutoff-bug-2026-05-18.
2026-05-06
- mando-cli session: 5 fixes shipped + 1 design shelved.
0be3458feat:mando mock downwith idempotent teardown (404 fromremove_container= success). Pins canonical 7-step pattern for docker-backed lifecycle commands. → mando-cli-mock-down-idempotent-2026-05-06.f8a54bffix: WireMock healthcheck targets/__admin/health(200) instead of/__admin(302→404) usingcurl -fsS. Diagnostic technique:docker inspect --format '{{json .State.Health}}'(wget exit 8 = HTTP error). → mando-cli-mock-down-idempotent-2026-05-06.68bcc63fix:mando statusmade read-only and bounded under 2s. Newconnect_readonly(single connect + 2s timeout, no retries, noensure_database) andtable_existshelpers indb/flyway.rs; setsstatement_timeout = '2s'post-connect. Status commands must be pure reads. → mando-cli-status-readonly-2026-05-06.6b1f7c7feat: yaml-driven build context to stop COPY-everything hangs. Newbuild.context_includes: Vec<String>onServiceBuildDef+ newruntime/build_context.rs::build_filtered_tarused by bothcommands/build.rsandruntime/runner.rs. Caught + fixed runner.rs hard-coded"Dockerfile"regression in same commit. → mando-cli-build-context-filter-2026-05-06.302be50feat: shippedcontext_includesdefaults for all 5 app services insrc/config/defaults/*.yaml. → mando-cli-build-context-filter-2026-05-06.- SHELVED: profile-driven build variants (dev runtime-only Dockerfile +
cargo build --releasepre-step vs release multi-stage chef Dockerfile). Captured design + open questions; no code shipped. → mando-cli-build-variants-shelved-2026-05-06.
- Parallel-release CI restructure shipped to mando-cli-github-build-mirror (
a939117on master): split monolithicgitlab-releasejob intoinit-gitlab-release→buildmatrix (each matrix job uploads + links its own binary) →release+gitlab-finalize(checksums only). Linux/macOS no longer block on Windows aarch64. New “Parallel release flow (2026-05)” section in the doc.
2026-05-05
- BE-2272 branch
feature/BE-2272(renamed from priorbugfix/BE-2023) — continuation of the BE-1842 Datadog Observability arc; flattens DD log JSON. - Removed the
span.*namespace from formatter output:flow.exec_id,flow.context,step.name,step.connectionnow sit at the document root alongsideerror.*/http.*(symmetric DD facet layout). - Single-file change in mando-lib
src/app/dd_formatter.rs(+295/-16): droppedserialize_entry("span", ...), addedMapVisitor: tracing::field::Visitto collect event fields intoserde_json::Map<String, Value>, span-fields-first / event-fields-second merge with explicit event-wins precedence. - Removed magic
nameinjection incollect_span_fields(was outermost span name; unused in DD dashboards). - 11 unit tests added with a reusable capture harness (
tracing::subscriber::with_default+ customMakeWriteroverMutex<Vec<u8>>); pattern reusable for futuredd_formatterchanges. - 262 workspace tests pass, 0 regressions; scope strictly contained to the formatter.
- Plan in repo:
docs/superpowers/plans/2026-05-05-flatten-log-fields-to-root.md. - Open follow-ups: DD dashboard column migration (
@span.X→@X),execution.idvsflow.exec_idnaming unification, deadErrorCodederive arms in mando-lib-macro. - Branch state: local-only on
feature/BE-2272, uncommitted.
2026-05-04
dc7b4259chore: bumpedCargo.lockfor py-mando after pulling inthiserrordep.cd97fc35fix: converted py-mando error logs tomando_core::error!macro so Python-binding errors carry typederror.kind(parity with Rust pattern from MR !481).923603f0refactor: removed inlinestep.name/step.connectionevent fields now that the step span carries them — children inherit viadd_formatterroot→leaf scope walk.b8d3278dfix: addedstep.nameandstep.connectiononto the step span atmando-lib/src/workflow/mod.rs:350so child events inherit them in Datadog (see BE-1842 Datadog Observability).c945514efix: log step errors at the failure site to preserve realerror.kindinstead of generic wrapper at the catch boundary.4c543cb1fix: downgraded parent flow error logs towarnwhen the child step has already logged the error (deduplicates Datadog noise).ab622e29fix: instrumented everytokio::spawncall with tracing spans so async tasks no longer drop trace context.5618603efix: removed per-layerFilterFnfrom the OTel layer — the filter was suppressing events and breaking span field inheritance (root cause of BE-1842 Datadog Observability regressions).117f7b58fix: foundation commit onbugfix/BE-2023— deduped step error logging, upgraded OTel deps, threadedexecution_idthroughFlowInfo.- All 9 commits are follow-ups to MR !481 (
feat: error handling redesign, BE-2023) addressing reviewer feedback (Balazs Mracsko, Krisztian Fekete) and Datadog defects; iterative debugging captured in screenshots under/Volumes/bandi/coding/poc/mando/(datadog-tab2-broken.png,dd-doublelog-1.png,dd-current-state.png,dd-log-expanded.png, etc.). Context: Agent Context. - Initialized activity log.