[
https://issues.apache.org/jira/browse/HDDS-15926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Siyao Meng updated HDDS-15926:
------------------------------
Description:
This aims to track the effort on formal/semi-formal verification of each aspect
in Ozone, with [TLA+|https://github.com/tlaplus/tlaplus],
[P|https://github.com/p-org/P], etc.
Readings:
*
[https://cacm.acm.org/practice/systems-correctness-practices-at-amazon-web-services/]
*
[https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/05/24/ai-revolution-in-distributed-systems.html]
h2. Call for help: run a verification target
Verification runs are independent and parallelizable, so this is easy to share
out. Each runnable target is filed as its own sub-task under this umbrella,
labelled {{specula}} and {{help-wanted}}, unassigned, with a guidance file
attached that defines the scope, the code entry points, and the question to
investigate. Pick one and run it.
Find the available ones with:
{code:none}
project = HDDS AND parent = HDDS-15926 AND labels = specula AND assignee IS
EMPTY
{code}
h3. How to help
# Pick an unassigned sub-task and assign it to yourself, so others know it is
taken.
# Re-pin the run to the current master head instead of the commit written in
the sub-task (the pinned commit only records what the description was written
against). Get it with {{git fetch -q https://github.com/apache/ozone master &&
git rev-parse --short FETCH_HEAD}}, or without a clone with {{git ls-remote
https://github.com/apache/ozone master}}. Note that hash in the sub-task.
# Point your coding agent (Claude Code, Codex, or similar) at the sub-task and
have it run [Specula|https://github.com/specula-org/Specula]. The sub-task
carries the exact command and the attached guidance file. The agent does the
analysis, spec generation, model checking, trace validation, and confirmation.
# Report back on the sub-task: post the outcome, including the commit you ran
against. Zero findings is a useful result, because it records the target as
covered at that commit. For each confirmed bug, file a separate Ozone Bug and
link it to the sub-task with the "Testing" link type.
# Optionally, post the generated TLA+ specification. Where to store and
maintain generated models long term is still an open question, so attaching it
to the sub-task is fine for now. Opinions on a durable home for them are
welcome.
h3. Notes for runners
* Expect hours of wall clock per target, roughly 28 GB of RAM for TLC, JDK 21,
and an LLM agent budget.
* Code entry-point line numbers in a guidance file were captured at an earlier
commit and may have shifted. Treat them as approximate. Specula re-analyzes the
source, so a run does not depend on them.
* Findings are proposals. A model-checking counterexample is a hypothesis about
the code until it is confirmed against the implementation, and any fix still
needs human review and testing before merge.
* Effort level {{medium}} is the tested default for large targets. Higher
effort can hit per-turn timeouts on the biggest ones.
h3. Progress so far
Twenty targets have been verified (OM write path and read consistency, key
lifecycle and FSO deletion, snapshot diff and GC, SCM ReplicationManager and HA
catch up, DataNode replication and EC, Recon OM sync). Those produced the bugs
linked under the sub-tasks of this umbrella, each with a proposed fix and test
patch attached. The remaining targets are the open {{help-wanted}} sub-tasks.
was:
This aims to track the effort on formal/semi-formal verification of each aspect
in Ozone, with [TLA+|https://github.com/tlaplus/tlaplus],
[P|https://github.com/p-org/P], etc.
Readings:
*
[https://cacm.acm.org/practice/systems-correctness-practices-at-amazon-web-services/]
*
[https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/05/24/ai-revolution-in-distributed-systems.html]
> Umbrella for Ozone TLA+ verification effort
> -------------------------------------------
>
> Key: HDDS-15926
> URL: https://issues.apache.org/jira/browse/HDDS-15926
> Project: Apache Ozone
> Issue Type: Task
> Reporter: Siyao Meng
> Assignee: Siyao Meng
> Priority: Major
>
> This aims to track the effort on formal/semi-formal verification of each
> aspect in Ozone, with [TLA+|https://github.com/tlaplus/tlaplus],
> [P|https://github.com/p-org/P], etc.
> Readings:
> *
> [https://cacm.acm.org/practice/systems-correctness-practices-at-amazon-web-services/]
> *
> [https://zfhuang99.github.io/github%20copilot/formal%20verification/tla+/2025/05/24/ai-revolution-in-distributed-systems.html]
> h2. Call for help: run a verification target
> Verification runs are independent and parallelizable, so this is easy to
> share out. Each runnable target is filed as its own sub-task under this
> umbrella, labelled {{specula}} and {{help-wanted}}, unassigned, with a
> guidance file attached that defines the scope, the code entry points, and the
> question to investigate. Pick one and run it.
> Find the available ones with:
> {code:none}
> project = HDDS AND parent = HDDS-15926 AND labels = specula AND assignee IS
> EMPTY
> {code}
> h3. How to help
> # Pick an unassigned sub-task and assign it to yourself, so others know it is
> taken.
> # Re-pin the run to the current master head instead of the commit written in
> the sub-task (the pinned commit only records what the description was written
> against). Get it with {{git fetch -q https://github.com/apache/ozone master
> && git rev-parse --short FETCH_HEAD}}, or without a clone with {{git
> ls-remote https://github.com/apache/ozone master}}. Note that hash in the
> sub-task.
> # Point your coding agent (Claude Code, Codex, or similar) at the sub-task
> and have it run [Specula|https://github.com/specula-org/Specula]. The
> sub-task carries the exact command and the attached guidance file. The agent
> does the analysis, spec generation, model checking, trace validation, and
> confirmation.
> # Report back on the sub-task: post the outcome, including the commit you ran
> against. Zero findings is a useful result, because it records the target as
> covered at that commit. For each confirmed bug, file a separate Ozone Bug and
> link it to the sub-task with the "Testing" link type.
> # Optionally, post the generated TLA+ specification. Where to store and
> maintain generated models long term is still an open question, so attaching
> it to the sub-task is fine for now. Opinions on a durable home for them are
> welcome.
> h3. Notes for runners
> * Expect hours of wall clock per target, roughly 28 GB of RAM for TLC, JDK
> 21, and an LLM agent budget.
> * Code entry-point line numbers in a guidance file were captured at an
> earlier commit and may have shifted. Treat them as approximate. Specula
> re-analyzes the source, so a run does not depend on them.
> * Findings are proposals. A model-checking counterexample is a hypothesis
> about the code until it is confirmed against the implementation, and any fix
> still needs human review and testing before merge.
> * Effort level {{medium}} is the tested default for large targets. Higher
> effort can hit per-turn timeouts on the biggest ones.
> h3. Progress so far
> Twenty targets have been verified (OM write path and read consistency, key
> lifecycle and FSO deletion, snapshot diff and GC, SCM ReplicationManager and
> HA catch up, DataNode replication and EC, Recon OM sync). Those produced the
> bugs linked under the sub-tasks of this umbrella, each with a proposed fix
> and test patch attached. The remaining targets are the open {{help-wanted}}
> sub-tasks.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]