Skip to content

Add explicitly typed unfinished node definitions - #1662

Merged
shunichironomura merged 2 commits into
mainfrom
feat/unfinished-nodes
Sep 12, 2026
Merged

shunichironomura merged 2 commits into
mainfrom
feat/unfinished-nodes

Conversation

@shunichironomura

@shunichironomura shunichironomura commented Sep 12, 2026 •

Copy link
Copy Markdown
Member

Warning

This content was written by an AI agent and must be verified by a human developer. After human verification, this alert may be removed.

Summary

Support node name: Type = todo { @dependencies }; as a dedicated node definition, not an expression or built-in function.

  • Require an explicit type and exhaustive, possibly empty, direct dependency list. Preserve normal name, visibility, unit/type, and cycle checks and the existing Static/Term/Unit namespaces.
  • Keep whole-node placeholders and static dependency blocking as permanent semantics, including dependencies in unselected call branches. Formula replacement removes the marker's dependency contract.
  • Preserve independent results and distinguish TODO/BLOCKED from genuine failures across evaluation, assertions, plots, reports, Wasm, and LSP. Genuine DAG-call failures still propagate; #[expected_fail] never turns a blocked assertion into success.
  • Add check --deny-todo and eval --allow-incomplete. Checking does not become runtime domain-value validation, and allowing incompleteness never suppresses genuine failures.
  • Update formatting, graph export, grammar, and paired English/Japanese learning documentation. Translation recording is not human approval.
  • Size-optimize only the browser release profile: the rebuilt Wasm is approximately 5.32 MiB, within the unchanged 6.5 MiB budget. Freshness and integrity checks remain enabled.

Validation

Freshly passed:

  • just lint (all-feature/no-default-feature Clippy, audits, docs, architecture checks)
  • just test (formal oracle conformance, workspace tests, real Wasm/playground and report runtime tests)
  • just docs-check
  • just playground-browser-test (strict bilingual site build, asset budgets, browser tests)
  • just report-browser-test
  • cargo +nightly fuzz check --fuzz-dir fuzz and a bounded formatter fuzz run seeded with TODO definitions

Parser and editor regressions cover contextual identifiers and ordinary constructors named todo; the existing namespace proofs are not presented as a concrete-grammar unambiguity proof.

Companion PRs

AI assistance

  • AI used: yes — implementation, regression tests, documentation/translation updates, and validation.
  • Human review of AI-assisted code: pending; Japanese translation review is also pending.

Breaking changes

  • No breaking changes
  • Breaking changes; the breaking change label is applied

No existing Graphcal source program needs modification. Internal Rust representations and result interfaces change without compatibility workarounds.

@shunichironomura
shunichironomura merged commit e50f559 into main Sep 12, 2026
35 checks passed
@shunichironomura
shunichironomura deleted the feat/unfinished-nodes branch September 12, 2026 09:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant