Skip to content

FE-1480: Project and realize a CPS model as a Petrinaut SDCPN - #9313

Merged
lunelson merged 7 commits into
mainfrom
ln/fe-1480-resolve-decision
Aug 26, 2026
Merged

FE-1480: Project and realize a CPS model as a Petrinaut SDCPN#9313
lunelson merged 7 commits into
mainfrom
ln/fe-1480-resolve-decision

Conversation

@lunelson

@lunelson lunelson commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

🌟 What is the purpose of this PR?

A cyber-physical system (CPS) model can say what stochastic and dynamic Petrinaut net code must express, but it cannot choose a TypeScript implementation. This pull request records that split as an accepted decision: pure projection stops at a deterministic scaffold and typed code obligations; executable TypeScript is realized later through Petrinaut's client tools. It also records which design issues to settle next from existing baseline evidence, before runtime implementation resumes. Projection and realization code remain later work.

🔗 Related links

🚫 Blocked by

FE-1438 blocks a later production proof of executable realization, not this decision record.

🔍 What does this change?

ADR-0005 amends the three-register claim in ADR-0003 and extends ADR-0004's artifact contract without changing application/library topology. The plugin's pure project step must emit a versioned stochastic dynamically colored Petri net (SDCPN) scaffold, a sidecar of field-addressed code obligations, and a typed loss report. Generated TypeScript is derived artifact state at the application meeting point; it is not a capture, a fourth register, or a plugin operation. Steering and the specification suite are reconciled to that boundary, and the selected next work is a design-convergence queue that can run from existing transcripts and literature.

🏗️ Agent notes

Stacked as ln/fe-1494-strategic-controlsln/fe-1495-typescript-contractsthis branch.

Commits

  • db3bf21054 Define SDCPN artifact realization boundary
  • d3feeaa596 Reconcile the projection obligation ledger
  • e070ee89f9 Select the Brunch design convergence queue
  • 44a5e1df95 Encode the design convergence prerequisites

ADR-0005 outputs of project(elicitedModel)

  1. Versioned SDCPN scaffold: deterministic structure plus readable comments in code fields that still need implementation.
  2. Typed code obligations keyed by element and field: semantic intent, available places/token fields/parameters, supporting capture ids, acceptance checks.
  3. Typed per-capture loss report.

Comments are readable context only. Realization must consume the sidecar. FE-1438 remains the hard blocker for the executable production proof because client tools must return field-addressed compiler diagnostics. Scaffold and obligation design do not require that round trip.

Selected design-convergence order

Recorded in docs/control/STEERING.md and STRATEGY-LOG.md. Linear owns the three hard prerequisite joins: FE-1407 blocks FE-1404, FE-1404 blocks FE-1406, and FE-1406 blocks FE-1431. Remaining arrows are strategic order, not additional Linear blockers.

design resolution
FE-1407 failure catalogue -> FE-1402 completion/stopping contract
-> FE-1403 CPS guidance -> FE-1404 condition-3 run
-> FE-1406 strategy quiver -> FE-1431 plugin-authoring/absence-locator closure

reviewer-path implementation
FE-1420 retry/abandonment safety -> FE-1438 client-tool return -> FE-1439 durable session

semantic implementation
FE-1393 exercised plugin SDK -> FE-1482 CPS plugin -> FE-1478 provenance read
-> FE-1480 scaffold/realization -> FE-1479 targeted correction join

Resolving the authority boundary does not select FE-1480 implementation as the next build. During design convergence, do not implement SDK, client tools, projection, provider routing, or deployment.

Spec and glossary

CONTEXT.md adds artifact boundary, code obligation, and artifact realization. Specs under docs/specs/ and SPEC-LEDGER.md distinguish deterministic scaffold/obligation output from pending projection and realization work.

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • does not modify any publishable blocks or libraries, or modifications do not need publishing

Documentation and glossary only.

📜 Does this require a change to the docs?

The changes in this PR:

  • require changes to docs which are made as part of this PR

ADR-0005, steering, specs, ledger, index, and glossary. No Petrinaut user-guide pages.

🕸️ Does this require a change to the Turbo Graph?

The changes in this PR:

  • do not affect the execution graph

⚠️ Known issues

This branch does not implement project, obligation fulfillment, or Petrinaut compilation. FE-1438 still blocks an executable production proof of realization. Implementation priority versus the under-built elicitor remains a steering choice, not a consequence of landing this decision.

🐾 Next steps

🛡 What tests cover this?

No new executable tests. Existing architecture documentation-index coverage should still pass after the INDEX.md and ADR additions. Review is the check for ADR-0005, steering, and spec consistency.

❓ How to test this?

  1. Read libs/@hashintel/brunch-agent/docs/adr/0005-model-assisted-sdcpn-realization.md and confirm it matches the FE-1480 issue's accepted boundary.

  2. Read libs/@hashintel/brunch-agent/docs/control/STEERING.md and confirm design convergence is the selected next work, with FE-1480 realization later.

  3. Run:

    turbo run test:unit --filter @hashintel/brunch-agent

📹 Demo

Not applicable — decision and steering records only.

@github-actions github-actions Bot added area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team labels Aug 24, 2026
@vercel

vercel Bot commented Aug 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hash Ready Ready Preview Aug 26, 2026 10:50am
petrinaut Ready Ready Preview Aug 26, 2026 10:50am
petrinaut-docs Ready Ready Preview Aug 26, 2026 10:50am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hashdotdesign-tokens Ignored Ignored Preview Aug 26, 2026 10:50am

Request Review

lunelson commented Aug 24, 2026

Copy link
Copy Markdown
Contributor Author

@lunelson lunelson changed the title Define SDCPN artifact realization boundary FE-1480: Project and realize a CPS model as a Petrinaut SDCPN Aug 24, 2026
@lunelson
lunelson marked this pull request as ready for review August 24, 2026 16:20
@lunelson
lunelson marked this pull request as draft August 24, 2026 16:20
@cursor

cursor Bot commented Aug 24, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
No runtime or library code changes—only architecture, steering, and spec text. Risk is limited to teams building against outdated assumptions about deterministic full-net projection.

Overview
Documentation-only decision record for FE-1480: pure project stops at a deterministic SDCPN scaffold, a typed code-obligation sidecar, and the loss report; runnable TypeScript is artifact realization at the application layer (Petrinaut client tools, compile/sim gates), not a capture, fourth IR register, or plugin operation.

ADR-0005 is added and wired through ADR-0003 / ADR-0004, the elicitation-kernel and IR/plugin specs, SPEC-LEDGER, CONTEXT.md glossary, and INDEX.md. STEERING and STRATEGY-LOG (S-004–S-006) pivot the active frontier to a design-convergence queue (FE-1407FE-1402/1403 → FE-1404FE-1406FE-1431) from existing baseline evidence, with reviewer-path work (FE-1420/1438/1439) before semantic FE-1480 implementation; FE-1438 remains the gate for an executable realization proof. Agent legibility and steering protocols gain review-before-commit rules for ordered proof frontiers.

Reviewed by Cursor Bugbot for commit 2224d62. Bugbot is set up for automated code reviews on this repo. Configure here.

@lunelson

Copy link
Copy Markdown
Contributor Author

Status note (2026-08-25): the design-convergence queue and the three hard prerequisite joins described in the agent notes here (FE-1407FE-1404FE-1406FE-1431) were superseded by strategy entry S-007 and ADR-0006 in #9322, further up this stack. The blockers were removed in Linear; the record above is kept as authored.

@lunelson
lunelson force-pushed the graphite-base/9313 branch from b93c663 to ddecada Compare August 26, 2026 10:42
@lunelson
lunelson force-pushed the ln/fe-1480-resolve-decision branch from 75ccc94 to 2224d62 Compare August 26, 2026 10:42
@lunelson
lunelson changed the base branch from graphite-base/9313 to ln/fe-1495-typescript-contracts August 26, 2026 10:42
Base automatically changed from ln/fe-1495-typescript-contracts to main August 26, 2026 11:27
@lunelson
lunelson dismissed CiaranMn’s stale review August 26, 2026 11:27

The base branch was changed.

@github-actions github-actions Bot added area/deps Relates to third-party dependencies (area) area/tests New or updated tests area/apps labels Aug 26, 2026
@kostandinang
kostandinang self-requested a review August 26, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps area/deps Relates to third-party dependencies (area) area/infra Relates to version control, CI, CD or IaC (area) area/libs Relates to first-party libraries/crates/packages (area) area/tests New or updated tests type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

3 participants