Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
b4cd162
Add resource admission control to parallel executor
cursoragent Feb 18, 2026
27855a2
Add git-signal fast path for lint preflight
cursoragent Feb 18, 2026
19652f8
Draft sandbox and replay RFC for runtime
cursoragent Feb 18, 2026
b2f7364
Capture verify stdout in CI parse and report paths
cursoragent Feb 18, 2026
24f3527
Add verify-stage failure extractor and reduce duplicate output
cursoragent Feb 18, 2026
39fac2e
Add canonical platform model and deps adapters
cursoragent Feb 18, 2026
18d5d10
Extract browser open resolution to shared primitive utility
cursoragent Feb 18, 2026
9d8e502
Use typed OS keys for deps and gh install metadata
cursoragent Feb 18, 2026
c8db83a
Model MIPS toolchain commands in canonical platform types
cursoragent Feb 18, 2026
31f7f78
Type platform registry keys with PlatformId
cursoragent Feb 18, 2026
08bbeed
Generate platform mock variants in testgen defaults
cursoragent Feb 18, 2026
4104079
Add target-triple ABI conformance tests
cursoragent Feb 18, 2026
0b308fe
Align DSL platform vocabulary with canonical target model
cursoragent Feb 18, 2026
b3e05ed
Sync grouped progress milestones in logging roadmap
cursoragent Feb 18, 2026
1de357a
Expand TCP transport behavioral coverage for C4.1
cursoragent Feb 18, 2026
ad450da
Add WorkspaceLayout model derived from cargo metadata
cursoragent Feb 18, 2026
dc5b1cd
Use WorkspaceLayout for pragma lint repo root
cursoragent Feb 18, 2026
0742dd3
Use WorkspaceLayout in daglang-cli test root helpers
cursoragent Feb 18, 2026
fe4d0b6
Add DSL Platform compatibility adapters to Os model
cursoragent Feb 18, 2026
ea903a3
Sync failure-first rendering milestones in roadmap
cursoragent Feb 18, 2026
4161315
Derive resource input patterns from WorkspaceLayout
cursoragent Feb 18, 2026
2d855a8
Compute exec-runtime Cargo paths from output directory
cursoragent Feb 18, 2026
a20a5e0
Use WorkspaceLayout for DSL and codegen output roots
cursoragent Feb 18, 2026
d9fada7
Derive pragma allowlist paths from workspace crate layout
cursoragent Feb 18, 2026
3ad9ce2
Add CI grouping and structured errors for preflight
cursoragent Feb 18, 2026
fc5508d
Standardize CI ops status fields with OutputMap helper
cursoragent Feb 18, 2026
6a6e961
Use shared attention formatting in codegen CLI
cursoragent Feb 18, 2026
ba1f03e
Add typed TCP transport ops and typed triplet ports
cursoragent Feb 18, 2026
9a0f7ee
Introduce DisplayConfig and redaction-focused display tests
cursoragent Feb 18, 2026
9254f9d
Mark large-log regression coverage milestone complete
cursoragent Feb 18, 2026
b4208ba
Add snapshot-style terminal and CI report output tests
cursoragent Feb 18, 2026
20139a9
Add CI secret masking regression test in display path
cursoragent Feb 18, 2026
1b16a3c
Mark binary log-loop consolidation milestone complete
cursoragent Feb 18, 2026
596fdc4
Unify CI and terminal truncation policy via shared value helper
cursoragent Feb 18, 2026
397d44c
Fix dry-run mock resolution for scoped transport nodes
cursoragent Feb 18, 2026
ea6506b
Mark workflow UX parity smoke coverage complete
cursoragent Feb 18, 2026
2d7e4b1
Add DAG-driven coercion path discovery in type registry
cursoragent Feb 18, 2026
21e880d
Sync C5.2 cardinality inference milestones to implemented state
cursoragent Feb 18, 2026
bd0f0a8
Add explicit transform coercion edges to type registry
cursoragent Feb 18, 2026
c8b19c8
Expand coercion path coverage with multi-step widening chain
cursoragent Feb 18, 2026
5e738c0
Add container covariance coercion path coverage
cursoragent Feb 18, 2026
20ced80
Add explicit optional unwrap coercion path coverage
cursoragent Feb 18, 2026
fe28c60
Add cross-provider coercion alignment regression tests
cursoragent Feb 18, 2026
b64a398
Enforce type-driven port cardinality and add drift audit
cursoragent Feb 18, 2026
97d8581
Add transport behavior specs for core executor families
cursoragent Feb 18, 2026
4a3054e
Extract semantic carrier classification into shared IR types
cursoragent Feb 18, 2026
791eaa5
Derive transport triplets in daglang-derive artifacts
cursoragent Feb 18, 2026
3114e76
Integrate transport behavior specs into testgen coverage
cursoragent Feb 18, 2026
b8b8e1f
Record transport handle-model decision after behavior spec evaluation
cursoragent Feb 18, 2026
970ed70
Add DAG-native system model registry for C6 wave
cursoragent Feb 18, 2026
c65796e
Derive contract test specs from DAG-native system behaviors
cursoragent Feb 18, 2026
6af6e09
Add multi-cloud system models and store mapping checks
cursoragent Feb 18, 2026
edb64fa
Extract FsEnv auto-wiring helpers for graph and dry-run paths
cursoragent Feb 18, 2026
869e303
Add delegate derive macros and migrate core graph op enums
cursoragent Feb 18, 2026
e1b6ad6
Adopt DelegateExecutable across shared graph-op crates
cursoragent Feb 18, 2026
fe2b359
Mark delegation and FsEnv anemic-modeling actions complete
cursoragent Feb 18, 2026
5d80a5c
Close DSL skip-semantics migration items with existing upsert lowering
cursoragent Feb 18, 2026
3ddee7a
Audit DSL transport triplets across workspace tool modules
cursoragent Feb 18, 2026
e3714d2
Add shared run_tool ceremony helper for core DAG binaries
cursoragent Feb 18, 2026
acc727e
Migrate remaining DAG binaries to shared run_tool helper
cursoragent Feb 18, 2026
ab0af66
Document gist-recent credential diagnostics baseline
cursoragent Feb 18, 2026
9c450bf
Expand GCP service-account spec and catalog metadata
cursoragent Feb 18, 2026
35f03c6
Add IAM service-account CRUD and SA IAM policy service methods
cursoragent Feb 18, 2026
b41f71b
Add service-account IAM binding ops for GCP workflows
cursoragent Feb 18, 2026
62db7ab
Derive WorkspaceBinary invocations from tool registry metadata
cursoragent Feb 18, 2026
3ff235b
Generalize GCP IAM ensure graph for SA policy bindings
cursoragent Feb 18, 2026
edb3ae1
Record authored pragma and codegen DSL definitions
cursoragent Feb 18, 2026
d518179
Add WIF pool/provider CRUD service methods and config model
cursoragent Feb 18, 2026
9264175
Model WIF spec details and SA IAM graph generalization
cursoragent Feb 18, 2026
4a703ac
Surface mtime fallback diagnostics through manifest freshness state
cursoragent Feb 18, 2026
6582650
Add capability marker forgery regression tests for resource handles
cursoragent Feb 18, 2026
142ec9c
Remove legacy gist batch-read shell helpers
cursoragent Feb 18, 2026
ff2a575
Validate MockSpec input mocks against DAG input ports
cursoragent Feb 18, 2026
23e60c1
Add ResolveContext precedence with file-backed profile loading
cursoragent Feb 18, 2026
d1cb232
Replace fixed cardinality cap with sampling strategy model
cursoragent Feb 18, 2026
fb7ce90
Add parametric Map type-id support for mock proofs and testgen
cursoragent Feb 18, 2026
2e15ea1
Enforce port type-id guardrails against List and Set aliases
cursoragent Feb 18, 2026
2195844
Add strict dry-run poisoning for deps platform resource defaults
cursoragent Feb 18, 2026
87b0b62
Add canonical authenticate pattern contract phases in IR
cursoragent Feb 18, 2026
08cd297
Migrate gist and llm credential flows to authenticate pattern contract
cursoragent Feb 18, 2026
2c6d70a
Add credential policy loader and bind gist/llm resolve-auth intents
cursoragent Feb 18, 2026
4d0d0c0
Gate impersonation flow with credential policy decision wiring
cursoragent Feb 18, 2026
d70f31d
Fail scope preflight when required scopes are missing
cursoragent Feb 18, 2026
238715c
Assert coercion target input shapes in generated coverage tests
cursoragent Feb 18, 2026
310d22b
Add secret rotation handlers and max-age checks to cloud specs
cursoragent Feb 18, 2026
11a6191
Model per-environment config fields and add test namespace specs
cursoragent Feb 18, 2026
9935561
Add unified InfraSpec model with environment constants
cursoragent Feb 18, 2026
5ae0651
Add DOT infrastructure graph renderer for unified InfraSpec
cursoragent Feb 18, 2026
4c972e8
Add namespace-aware secret export rendering for direnv integration
cursoragent Feb 18, 2026
6228d51
Add per-secret provisioning DAG builder from canonical spec
cursoragent Feb 18, 2026
6d3d9b4
Add infra plan/apply DAG builders with target and skip filters
cursoragent Feb 18, 2026
99edd2c
Add TTL secret cache and partial fetch planning helpers
cursoragent Feb 18, 2026
045bfd2
Add multi-project registry and cross-project WIF binding derivation
cursoragent Feb 18, 2026
32414e4
.
briansrls Feb 18, 2026
2395eaa
.
briansrls Feb 18, 2026
9d018f6
.
briansrls Feb 18, 2026
7d3f2ba
.
briansrls Feb 18, 2026
3e78a15
.
briansrls Feb 18, 2026
4cb4a38
.
briansrls Feb 18, 2026
b1300b0
.
briansrls Feb 18, 2026
082aab2
.
briansrls Feb 18, 2026
33daa0e
.
briansrls Feb 18, 2026
f943218
.
briansrls Feb 18, 2026
70079a3
.
briansrls Feb 18, 2026
5928f49
.
briansrls Feb 18, 2026
646f913
.
briansrls Feb 18, 2026
ac9c913
.
briansrls Feb 18, 2026
b6c3473
.
briansrls Feb 19, 2026
5fe508f
.
briansrls Feb 19, 2026
75bdc8d
.
briansrls Feb 19, 2026
8cdc3ee
.
briansrls Feb 19, 2026
90b8b8d
.
briansrls Feb 19, 2026
740c24b
.
briansrls Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
36 changes: 24 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ members = [
"core/test",
"core/testgen-registry",
"core/testgen-registry-macros",
"core/delegate-macros",
"core/tool-registry",
"core/tool-registry-macros",

Expand All @@ -22,7 +23,6 @@ members = [
"core/daglang/daglang-derive",
"core/daglang/daglang-emit",
"core/daglang/daglang-driver",
"core/daglang/daglang-exec-bridge",
"core/daglang/daglang-cli",

# Library crates (DAG op libraries)
Expand Down
80 changes: 6 additions & 74 deletions TODO/README.md
Original file line number Diff line number Diff line change
@@ -1,77 +1,9 @@
# TODO — DSL Program Index
# TODO

This folder is now organized around the DSL adoption program.
Primary roadmap reference: `docs/design/v4/dsl-roadmap.md`.
**Consolidated execution plan**: [`docs/design/v4/consolidated-worker-plan.md`](../docs/design/v4/consolidated-worker-plan.md) — unified dependency DAG, wave decomposition, and task assignments across all tracks.
**Task sheet**: [`tasks.md`](tasks.md) — monolithic, dependency-ordered, parallelizable.
**Roadmap**: [`docs/design/v4/consolidated-worker-plan.md`](../docs/design/v4/consolidated-worker-plan.md)
**Archive**: [`TODONE/`](TODONE/) — completed items with dates.

Last reconciled: 2026-02-18
Last updated: 2026-02-18

## Execution Order

1. Track A: DSL core compiler capabilities
2. Track B: DSL migration targets (move existing Rust DAG graphs to `.dag`)
3. Track C: modeling foundations needed for non-fragile DSL migration
4. Track D: runtime/test hardening required for confident rollout
5. Track E: domain parity and adjacent programs
6. Track F: general debt ledger

## Track Definitions

| Track | Purpose |
|------|---------|
| A — DSL Core | Language/compiler/runtime features needed by the roadmap |
| B — Migration Targets | Existing workflows that should be rewritten in DSL now |
| C — Modeling Foundation | Canonical models (platform, env, transport, composition) that remove stringly/manual wiring |
| D — Runtime/Test Hardening | Logging, testgen, codegen quality, and execution safety for DSL-generated flows |
| E — Domain Parity | Product/domain workstreams that should become DSL consumers over time |
| F — Debt Ledger | Generic cleanup and fallback debt not tied to one feature |

## Active Docs By Track

| Doc | Track | DSL Alignment | Status |
|-----|-------|---------------|--------|
| `TODO/TODO_URGENT_dsl_migration.md` | B | Primary migration backlog | Active |
| `TODO/TODO_workflow_audit.md` | B | Migration inventory + sequencing input | Draft |
| `TODO/TODO_URGENT_anemic_modeling_audit.md` | C | Cross-cutting model consolidation | Active |
| `TODO/TODO_URGENT_browser_modeling.md` | C | Platform/environment modeling prerequisite | Active |
| `TODO/TODO_URGENT_platform_toolchain_modeling.md` | C | Target/platform/toolchain canonicalization | Active |
| `TODO/TODO_transport_dag_migration.md` | C | Bring transport executor behavior into DAG/testing model | Draft |
| `TODO/TODO_URGENT_logging_consolidation.md` | D | Execution observability hardening for generated workflows | Active |
| `TODO/TODO_testgen_seed_policy_postmortem.md` | D | Testgen semantic input correctness | Partially complete |
| `TODO/design-codegen-quality.md` | D | Generated code idiom/IR quality | Active |
| `TODO/TODO_credential_lifecycle.md` | E | Credential/service modeling for DSL consumers | Draft |
| `TODO/TODO_gcp_infra_parity.md` | E | Domain parity backlog (DSL consumer target) | In Progress |
| `TODO/llm-code-review-pipeline.md` | E | Adjacent DAG pipeline architecture | V0 complete, follow-up open |
| `TODO/consolidation.md` | F | Generic consolidation backlog | Ongoing |
| `TODO/TODO_hacks.md` | F | Fallback/debt register | Active |

## Conventions

- Every active TODO doc should include:
- `Status`
- `Date` (or status date)
- `DSL Alignment`
- `Track`
- Use `TODO_URGENT_*.md` only for blockers or high-priority prerequisites.
- When complete, move docs to `TODO/TODONE/` and note completion date.
- If a doc is superseded, keep a short pointer at the top to the new source.

## Short Template

```markdown
# [Title]

**Status**: Draft | Active | In Progress | Completed
**Date**: YYYY-MM-DD
**DSL Alignment**: [one line]
**Track**: A | B | C | D | E | F

## Goal

[Outcome]

## Tasks

- [ ] Task A
- [ ] Task B
```
Individual TODO files have been consolidated into `tasks.md`. Original content preserved in git history.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# URGENT: Cross-Platform Browser Open Modeling

**Status**: Active
**Status**: DONE (moved to TODONE 2026-02-18; DSL surfacing is future scope)
**Date**: 2026-02-18
**Priority**: High
**DSL Alignment**: DSL foundation via environment-aware platform modeling
Expand Down Expand Up @@ -53,3 +53,16 @@ fn execute_open_browser(inputs: HashMap<String, Value>) -> Result<HashMap<String
- the-gunbai environment detection
- Current `Platform` enum: `lib/tools/deps/src/platform.rs`
- Current inline implementation: `gunbc-dag/src/dag_viz/graph.rs:451`

## Progress (2026-02-18)

- Added shared resolver utility: `lib/primitives/src/browser.rs`
- `browser_open_request(file_path, runtime)` using canonical `RuntimePlatform`.
- Added resolution table behavior:
- `(Linux, WSL) -> wslview` (absolute-path conversion)
- `(macOS, Native) -> open`
- `(Windows, Native) -> cmd /C start`
- default Linux/Unix path -> `xdg-open`
- `(CI|Container|Emulator) -> None` (no-browser/no-op path)
- Migrated `dag_viz` prepare step to call shared resolver (`gunbc-dag/src/dag_viz/graph.rs`).
- Added resolver tests in `lib/primitives` (`browser::tests::*`).
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# URGENT: Consolidate DAG-Level Logging & Error Reporting

**Status**: Active
**Date**: 2026-02-13
**Priority**: High
**Status**: DONE
**Date**: 2026-02-18 (completed)
**Priority**: High (resolved)
**DSL Alignment**: Runtime observability hardening for DSL-generated workflows
**Track**: D — Runtime/Test Hardening

Expand Down Expand Up @@ -122,11 +122,11 @@ the type system) is tracked in §8 below.
| Build | stdout + stderr | stderr | `build_stdout` exists but report ignores it |
| Test | stdout + stderr | stderr | `extract_test_failures` uses stdout |
| Lint | stdout + stderr | stderr | `lint_stdout` exists but report ignores it |
| Testgen | **missing** | stderr | stdout silently discarded |
| Bootstrap | **missing** | stderr | stdout silently discarded |
| Pragma | **missing** | stderr | stdout silently discarded |
| Guardrail | **missing** | stderr | stdout silently discarded |
| Verify | **missing** | stderr | stdout silently discarded |
| Testgen | stdout + stderr | stderr | captured in parse op outputs |
| Bootstrap | stdout + stderr | stderr | captured in parse op outputs |
| Pragma | stdout + stderr | stderr | captured in parse op outputs |
| Guardrail | stdout + stderr | stderr | captured in parse op outputs |
| Verify | stdout + stderr | stderr | captured in parse op + aggregated for report |

**Why this is a problem**: If testgen/bootstrap/pragma/guardrail/verify write
diagnostic info to stdout (e.g., test names, progress, warnings), it's lost.
Expand Down Expand Up @@ -249,6 +249,10 @@ convention for each op.
Then the display layer can generically show `error_summary` on failure without
knowing anything about the specific op.

**2026-02-18 progress**:
- Added shared `OutputMap::status(success, error_summary, detail)` helper in `core/exec`.
- Migrated CI ops incrementally (`parse_deps_exists`, `aggregate_verify_results`, `report`) to emit standardized status fields while preserving existing stage-specific outputs.

---

## 8. Secret Redaction Depends on Display Functions, Not the Type System
Expand Down Expand Up @@ -363,52 +367,52 @@ This effort is done only when all items below are true.
### B. Progress parity with `gunb.ai`

- [x] Progress is live (observer/event driven), not post-execution replay.
- [ ] Stage/task grouping exists for `gunbc` pipelines (at least CI stages).
- [x] Stage/task grouping exists for `gunbc` pipelines (at least CI stages). _(2026-02-18: `derive_stage_groups` + grouped stage panel rendering are active in `core/exec/src/progress.rs` and `core/exec/src/frame_build.rs`.)_
- [x] Non-TTY mode emits concise status/progress summaries instead of full per-node output dumps.
- [ ] Long-running/noisy groups have an expansion path (or equivalent drill-down) without dumping everything by default.
- [x] Long-running/noisy groups have an expansion path (or equivalent drill-down) without dumping everything by default. _(2026-02-18: grouped panel auto-expands failed groups and long-running groups with bounded detail lines.)_
- [x] Spinner behavior (TTY) is present and consistent across tools: running state, completion state, and failure state are visually distinct.

### C. Output quality and noise control

- [ ] Default output is failure-first: concise success path, detailed output only for failed stages/nodes.
- [ ] Raw stdout/stderr is not duplicated across execution logs, parse nodes, and final report.
- [ ] CI report and terminal summaries use one consistent truncation/summarization policy.
- [ ] Per-stage extractors exist for at least build, test, lint, and verify-style failures (with sensible fallback).
- [x] Default output is failure-first: concise success path, detailed output only for failed stages/nodes. _(2026-02-18: shared `StageResult`/extractor path emits concise stage summaries by default; grouped progress panel expands failed/long-running groups only.)_
- [x] Raw stdout/stderr is not duplicated across execution logs, parse nodes, and final report. _(2026-02-18: CI boundary signature excludes `*stdout`/`*stderr` raw stage outputs (`ci_signature` regression test added), and report rendering consumes bounded summaries via the shared truncation/redaction path.)_
- [x] CI report and terminal summaries use one consistent truncation/summarization policy. _(2026-02-18: both paths now use shared `Value::display_redacted_truncated` policy and shared max-line/max-width constants from `gunbc_ir`.)_
- [x] Per-stage extractors exist for at least build, test, lint, and verify-style failures (with sensible fallback). _(2026-02-18: build/lint/test extractors were already present; verify now uses `extract_verify_failures(stdout, stderr)` with bounded fallback rendering.)_

### D. Data capture completeness

- [ ] Parse ops for testgen/bootstrap/pragma/guardrail/verify capture both stdout and stderr.
- [ ] Report formatting can render failing stage output generically from structured stage fields.
- [x] Parse ops for testgen/bootstrap/pragma/guardrail/verify capture both stdout and stderr. _(2026-02-18: verify parse path now emits stdout alongside stderr/success and aggregate/report wiring consumes it.)_
- [x] Report formatting can render failing stage output generically from structured stage fields. _(2026-02-18: stage summaries now flow through shared `StageResult` + `format_stage_failure` path with stage-specific extractor hooks.)_

### E. Secret safety

- [ ] Human-visible rendering of values goes through a redaction chokepoint (`Value::display_redacted` or equivalent).
- [ ] No display path can accidentally emit `Value::Secret` plaintext.
- [ ] CI masking still occurs for secret outputs.
- [x] Human-visible rendering of values goes through a redaction chokepoint (`Value::display_redacted` or equivalent). _(2026-02-18: display path now funnels rendering through `render_value_for_port` + `Value::display_redacted(_truncated)` helpers.)_
- [x] No display path can accidentally emit `Value::Secret` plaintext. _(2026-02-18: `render_value_for_port` + `Value::display_redacted(_truncated)` enforce redaction for display output; dedicated regression tests assert secret values render as `***`.)_
- [x] CI masking still occurs for secret outputs. _(2026-02-18: `display::tests::test_mask_secrets_in_log_emits_mask_command_without_plaintext_secret` verifies mask commands emit without leaking plaintext secrets.)_

### F. Preflight integration

- [ ] Preflight output is routed through the same display/grouping infrastructure (no standalone `println!/eprint!` progress stream).
- [ ] Preflight failures produce structured error output consistent with the rest of the pipeline.
- [x] Preflight output is routed through the same display/grouping infrastructure (no standalone `println!/eprint!` progress stream). _(2026-02-18: preflight now emits CI provider group commands per step (`preflight/*`) while retaining local progress lines.)_
- [x] Preflight failures produce structured error output consistent with the rest of the pipeline. _(2026-02-18: preflight step failures now emit CI error annotations with structured `phase=preflight step=... error=...` payloads.)_

### G. User attention and error UX parity

- [x] High-signal failures are rendered with explicit attention formatting (boxed sections / equivalent) in TTY mode.
- [x] Error detail rendering preserves a clear non-TTY fallback (plain but structured, not raw dumps).
- [ ] Attention-level messaging (error/warning/info notices) uses one shared formatting path, not per-tool ad-hoc printing.
- [x] Attention-level messaging (error/warning/info notices) uses one shared formatting path, not per-tool ad-hoc printing. _(2026-02-18: `print_attention(AttentionLevel, ...)` is now used across DAG binaries, including `gunbc-codegen` top-level/error+warning pathways, providing unified semantics and color mapping.)_
- [x] Color semantics are consistent across status states (running, success, failure, dim/inactive) in TTY mode.

### H. End-to-end workflow adoption

- [x] All primary workflow binaries (`build`, `ci`, `codegen`, `testgen`, `makegen`, `bootstrap`, `pragma`) run through the shared progress/display path.
- [x] Generated CLI workflows also use the shared progress/display path (no generated bypass path).
- [ ] CI workflow execution and local execution both use the same underlying progress/event model, with only surface config differences.
- [ ] There are no remaining direct per-binary node-log print loops outside shared display infrastructure.
- [x] CI workflow execution and local execution both use the same underlying progress/event model, with only surface config differences. _(2026-02-18: `DisplayConfig { mode, verbosity }` now selects `Animated`/`Plain`/`CiPlain` surfaces while preserving shared execution path.)_
- [x] There are no remaining direct per-binary node-log print loops outside shared display infrastructure. _(2026-02-18: audited `gunbc-dag/src/bin/*` for `log.entries`/manual node-loop printing; binaries route through shared `execute_and_display*` paths.)_

### I. Verification and regression tests

- [ ] Unit tests cover display configuration modes (TTY/non-TTY/CI) and secret redaction behavior.
- [ ] Golden/snapshot tests cover concise success output and failure detail output for terminal and CI text modes.
- [ ] A regression test reproduces the 2026-02-13 large-log failure shape and proves output stays readable (bounded + non-duplicated).
- [x] Unit tests cover display configuration modes (TTY/non-TTY/CI) and secret redaction behavior. _(2026-02-18: added `display::tests::test_display_config_mode_resolution` and `test_render_value_for_port_redacts_secrets`.)_
- [x] Golden/snapshot tests cover concise success output and failure detail output for terminal and CI text modes. _(2026-02-18: added snapshot-style assertions for non-TTY summary lines in `core/exec::display` and CI report summaries/failure sections in `gunbc-dag::ci::ops`.)_
- [x] A regression test reproduces the 2026-02-13 large-log failure shape and proves output stays readable (bounded + non-duplicated). _(2026-02-18: `ci::ops::tests::test_regression_linker_explosion` verifies bounded extraction/truncation for large linker-style stderr payloads.)_
- [x] Existing tool flows (`build`, `ci`, `testgen`, `makegen`, `bootstrap`, `pragma`) pass with the new display path.
- [ ] End-to-end smoke coverage validates workflow UX parity in TTY and non-TTY modes for each primary binary.
- [x] End-to-end smoke coverage validates workflow UX parity in TTY and non-TTY modes for each primary binary. _(2026-02-18: executed dry-run smokes for `build`, `ci`, `codegen`, `testgen`, `makegen`, `bootstrap`, `pragma` in both non-TTY (`cargo run`) and pseudo-TTY (`script -qec ...`) modes.)_
Loading
Loading