Skip to content

Commit 4ce201b

Browse files
Clean public docs language and promote diagram render smoke CI to required
1 parent 332c4b4 commit 4ce201b

13 files changed

Lines changed: 50 additions & 66 deletions

.github/workflows/ci.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,8 @@ jobs:
198198
run: ctest --preset ci-windows-release
199199

200200
diagram-render-smoke:
201-
name: Diagram Render Smoke (advisory)
201+
name: Diagram Render Smoke
202202
runs-on: ubuntu-24.04
203-
continue-on-error: true
204203

205204
steps:
206205
- name: Checkout

CHANGELOG.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3636
- server protected-write rejection
3737
- server `--dt` timestep behavior
3838
- SignalStore unit-declaration behavior
39-
- Benchmark evidence tooling for Phase 2:
39+
- Benchmark evidence tooling:
4040
- policy profiles (`local`, `ci-hosted`, `ci-dedicated`)
4141
- benchmark evaluation script (`scripts/evaluate_benchmarks.py`)
4242
- benchmark evidence CI workflow with artifact upload (`.github/workflows/benchmark-evidence.yml`)
43-
- Phase 3 numerical validation framework:
43+
- Numerical validation framework:
4444
- `thermal_mass` integration method policy (`forward_euler`, `rk4`)
4545
- numerical validation runner (`scripts/run_numerical_validation.py`)
4646
- thermal validation target (`tests/validation/thermal_mass_validation.cpp`)
4747
- numerical validation CI evidence workflow (`.github/workflows/numerical-validation-evidence.yml`)
48-
- methodology/evidence docs (`docs/validation-methodology.md`, `docs/phase3-evidence.md`)
48+
- methodology/evidence docs (`docs/validation-methodology.md`, `docs/numerical-methods.md`)
4949

5050
### Fixed
5151

docs/graph-visualization.md

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
# Graph Visualization Contract
1+
# Graph Visualization
22

3-
**Status:** Phase 4 contract; Sprint 4.3 renderer integration implemented.
4-
**Purpose:** lock the visualization interface and behavior before coding to prevent drift in tests and CLI behavior.
3+
**Status:** Implemented
4+
**Purpose:** define the public behavior and evidence contract for FluxGraph graph-diagram generation.
55

66
## 1. Scope
77

8-
This phase adds an optional graph-diagram toolchain that:
8+
FluxGraph provides an optional graph-diagram toolchain that:
99

10-
1. takes FluxGraph graph definitions (JSON/YAML via existing loaders, or direct `GraphSpec` in C++),
11-
2. produces deterministic DOT output as the canonical artifact,
10+
1. accepts FluxGraph graph definitions (JSON/YAML via existing loaders, or direct `GraphSpec` in C++),
11+
2. emits deterministic DOT as the canonical artifact,
1212
3. optionally renders DOT to image formats using external Graphviz CLI tooling.
1313

14-
## 2. Non-Goals (Phase 4)
14+
## 2. Current Non-Goals
1515

1616
1. Live runtime graph tracing or time-series overlays.
1717
2. Interactive web UI or editor.
@@ -21,22 +21,18 @@ This phase adds an optional graph-diagram toolchain that:
2121
## 3. Build and Dependency Contract
2222

2323
1. Feature flag: `FLUXGRAPH_BUILD_DIAGRAM_TOOL` (default `OFF`).
24-
2. No new vcpkg feature is required for the CLI-renderer path in Phase 4.
24+
2. No new vcpkg feature is required for the current CLI-renderer path.
2525
3. Rendering uses external `dot` process when image output is requested.
2626
4. Core `fluxgraph` library dependency contract remains unchanged.
2727

2828
## 4. Architecture Contract
2929

30-
Planned split:
31-
3230
1. `viz-core`: pure C++ emitter (`GraphSpec -> DOT`), no third-party dependencies.
3331
2. `fluxgraph-diagram` CLI: input parsing/validation, file I/O, optional renderer invocation.
3432

3533
`viz-core` depends on FluxGraph public graph spec types (`GraphSpec`, `ModelSpec`, `EdgeSpec`, `RuleSpec`) and does not depend on runtime engine internals.
3634

37-
## 5. C++ API Sketch (for Direct Integrator Use)
38-
39-
Planned public surface (names may be finalized during implementation, contract intent is stable):
35+
## 5. C++ API Sketch (Direct Integrator Use)
4036

4137
```cpp
4238
#include <fluxgraph/graph/spec.hpp>
@@ -54,12 +50,12 @@ std::string emit_dot(const GraphSpec& spec, const DotEmitOptions& options = {});
5450
} // namespace fluxgraph::viz
5551
```
5652
57-
Contract guarantees:
53+
Guarantees:
5854
5955
1. `emit_dot` is deterministic for the same `GraphSpec` and options.
6056
2. Resulting DOT is syntactically valid for Graphviz `dot`.
6157
62-
## 6. DOT Emission Policy (Determinism + Escaping)
58+
## 6. DOT Emission Policy
6359
6460
## 6.1 Identifier and Label Escaping
6561
@@ -68,7 +64,7 @@ Contract guarantees:
6864
- `\` -> `\\`
6965
- `"` -> `\"`
7066
- newline -> `\n`
71-
3. Signal paths containing `/`, `.`, spaces, or other punctuation are valid and must be preserved via quoting.
67+
3. Signal paths containing `/`, `.`, spaces, or other punctuation are preserved via quoting.
7268
7369
## 6.2 Ordering Rules
7470
@@ -82,11 +78,11 @@ No reliance on container insertion order is allowed for canonical DOT output.
8278
8379
1. Unknown transform types are rendered (not dropped) using raw `type` text in edge annotation.
8480
2. Unknown transform types do not fail DOT generation unless required fields are structurally invalid.
85-
3. CLI should emit a non-fatal warning for unknown transform types.
81+
3. CLI emits a non-fatal warning for unknown transform types.
8682
87-
## 7. CLI Contract Phasing
83+
## 7. CLI Contract
8884
89-
Supported CLI flags:
85+
Supported flags:
9086
9187
1. `--in <path>`: required graph input (`.json`, `.yaml`, `.yml`)
9288
2. `--out <path>`: required output artifact path
@@ -101,28 +97,22 @@ Behavior:
10197
3. Graphviz invocation failures are explicit and include command context.
10298
4. For image outputs, `--dot-out` (if provided) must differ from `--out`.
10399
104-
Exit code contract (planned):
100+
Exit codes:
105101
106102
1. `0`: success
107103
2. `1`: input/load/validation failure
108-
3. `2`: unsupported option/format for current build
104+
3. `2`: unsupported option/format
109105
4. `3`: renderer invocation failure
110106
111-
Current implementation status:
112-
113-
1. DOT emission is implemented.
114-
2. SVG/PNG rendering via Graphviz CLI is implemented.
115-
3. `--dot-bin` and `--dot-out` are implemented.
116-
117-
## 8. Evidence and Governance Mapping
118-
119-
Planning source for claim-evidence governance: `working/archive/claim_evidence_matrix.md`.
120-
121-
Visualization claims and expected evidence for this phase:
122-
123-
1. "Deterministic DOT output": `tests/unit/viz_dot_emitter_test.cpp` and `tests/unit/viz_dot_golden_test.cpp`.
124-
2. "CLI DOT determinism end-to-end": `tests/integration/diagram_cli_e2e.cmake` (registered as `integration.diagram_cli_json_dot`).
125-
3. "Core isolation": default presets keep `FLUXGRAPH_BUILD_DIAGRAM_TOOL=OFF`.
126-
4. "Optional rendering": advisory GitHub Actions job `diagram-render-smoke` in `.github/workflows/ci.yml`.
127-
128-
This mapping is the baseline evidence package for the Phase 4 visualization surface.
107+
## 8. Evidence Mapping
108+
109+
1. Deterministic DOT output:
110+
- `tests/unit/viz_dot_emitter_test.cpp`
111+
- `tests/unit/viz_dot_golden_test.cpp`
112+
2. CLI DOT determinism end-to-end:
113+
- `tests/integration/diagram_cli_e2e.cmake` (registered as `integration.diagram_cli_json_dot`)
114+
3. Core isolation:
115+
- default presets keep `FLUXGRAPH_BUILD_DIAGRAM_TOOL=OFF`
116+
4. Renderer coverage in CI:
117+
- `linux-matrix` lane `diagram-dot`
118+
- `diagram-render-smoke` job in `.github/workflows/ci.yml`

docs/numerical-methods.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ It complements `docs/semantics_spec.md` and is authoritative for solver
77
selection and stability interpretation.
88
Validation protocol details are documented in `docs/validation-methodology.md`.
99

10-
## Current Policy (Phase 3.1 baseline)
10+
## Current Policy
1111

1212
1. Integration method selection is explicit per model via model parameters.
1313
2. If not specified, the deterministic default is `forward_euler`.
@@ -43,7 +43,7 @@ If `h <= 0`, the model is treated as unconditionally stable for this criterion.
4343

4444
## Validation Expectations
4545

46-
Phase 3 validation must report:
46+
Validation runs must report:
4747

4848
1. Error metrics (`L2`, `Linf`) versus analytical references.
4949
2. Convergence behavior as `dt` is refined.
@@ -59,7 +59,7 @@ Future methods (for example trapezoidal or implicit schemes) must define:
5959

6060
## Reproducible Validation Run
6161

62-
Use the validation runner to produce Phase 3 artifacts:
62+
Use the validation runner to produce validation artifacts:
6363

6464
```bash
6565
python scripts/run_numerical_validation.py --preset dev-release --enforce-order

docs/performance-benchmarks.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This document defines the reproducible benchmark workflow for FluxGraph.
66

77
Goals:
88

9-
1. Provide repeatable measurement artifacts for Phase 2 gates.
9+
1. Provide repeatable measurement artifacts for benchmark quality gates.
1010
2. Separate measured evidence from narrative claims.
1111
3. Keep benchmark runs deterministic enough for regression comparison.
1212

@@ -87,7 +87,7 @@ Required files:
8787
4. Git commit hash and dirty-worktree flag
8888
5. Per-benchmark executable path, command, exit code, duration, parsed PASS/FAIL status lines
8989

90-
Tick benchmark output additionally tracks measured heap allocations during the timed loop (`Allocations`, `Alloc/tick`) so Phase 2 zero-allocation evidence is captured per scenario.
90+
Tick benchmark output additionally tracks measured heap allocations during the timed loop (`Allocations`, `Alloc/tick`) so zero-allocation evidence is captured per scenario.
9191

9292
`benchmark_evaluation.json` contains:
9393

@@ -134,7 +134,7 @@ Recommended:
134134
2. Store artifacts as CI build artifacts.
135135
3. Apply `ci-hosted` profile on hosted runners and reserve strict gating for dedicated runners.
136136

137-
## Next Phase 2 Steps
137+
## Next Steps
138138

139139
1. Calibrate thresholds using several hosted-runner samples (reduce false positives while preserving sensitivity).
140140
2. Provision and commit a true `ci-dedicated` baseline from stable hardware.

docs/semantics_spec.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# FluxGraph Semantics Specification
22

3-
**Status:** Phase 0 baseline (pending dual sign-off)
4-
**Version:** 0.1.0-phase0
3+
**Status:** Baseline semantics specification
4+
**Version:** 0.1.0
55
**Last Updated:** March 1, 2026
66

77
## 1. Scope and Authority
@@ -135,7 +135,7 @@ Unit handling policy is strict and deterministic.
135135
3. Implicit solver algebraic-loop handling.
136136
4. Automatic unit conversion ontology.
137137

138-
## 11. Conformance Snapshot (March 1, 2026 - Post Phase 1 Pass)
138+
## 11. Conformance Snapshot (March 1, 2026)
139139

140140
This section records current implementation alignment against the normative contract.
141141

@@ -147,4 +147,4 @@ This section records current implementation alignment against the normative cont
147147
6. Unit checks enforce declared/first-write consistency and runtime mismatches throw: **partial** for Section 8 (compile-time inferential checks remain limited).
148148
7. Delay-mediated cycle acceptance is implemented via non-delay subgraph cycle policy: **partial** pending deeper delay-buffer semantics validation in complex mixed-order graphs.
149149

150-
Remaining gaps define follow-up Phase 1 hardening and Phase 3 evidence work.
150+
Remaining gaps define follow-up hardening and expanded evidence work.

docs/validation-methodology.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
## Purpose
44

5-
This document defines the validation protocol used to support Phase 3
5+
This document defines the validation protocol used to support
66
numerical claims for FluxGraph model integration behavior.
7-
Phase-level criteria mapping is documented in `docs/phase3-evidence.md`.
7+
This document is the authoritative criteria/source for numerical evidence.
88

99
## Systems Under Test
1010

include/fluxgraph/viz/dot_emitter.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ struct DotEmitOptions {
1515
std::string emit_dot(const GraphSpec &spec, const DotEmitOptions &options = {});
1616

1717
/// Return sorted transform types that are not part of the built-in set.
18-
std::vector<std::string> collect_extension_transform_types(const GraphSpec &spec);
18+
std::vector<std::string>
19+
collect_extension_transform_types(const GraphSpec &spec);
1920

2021
} // namespace fluxgraph::viz
21-

include/fluxgraph/viz/format.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,3 @@ std::optional<OutputFormat> parse_output_format(const std::string &value);
1515
const char *output_format_name(OutputFormat format);
1616

1717
} // namespace fluxgraph::viz
18-

include/fluxgraph/viz/graphviz_renderer.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,3 @@ std::string build_graphviz_command(const GraphvizRenderRequest &request);
2323
GraphvizRenderResult render_with_graphviz(const GraphvizRenderRequest &request);
2424

2525
} // namespace fluxgraph::viz
26-

0 commit comments

Comments
 (0)