Skip to content

Keep upcoming-mission drafts at conversational fidelity. - #9405

Draft
lunelson wants to merge 13 commits into
ln/fe-1524-mission-2from
ln/fe-1525-headless-runbook-pn
Draft

Keep upcoming-mission drafts at conversational fidelity.#9405
lunelson wants to merge 13 commits into
ln/fe-1524-mission-2from
ln/fe-1525-headless-runbook-pn

Conversation

@lunelson

Copy link
Copy Markdown
Contributor

🌟 What is the purpose of this PR?

🔗 Related links

  • ...

🚫 Blocked by

  • ...

🔍 What does this change?

  • ...

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
  • modifies an npm-publishable library and I have added a changeset file(s)
  • modifies a Cargo-publishable library and I have amended the version
  • modifies a Cargo-publishable library, but it is not yet ready to publish
  • modifies a block that will need publishing via GitHub action once merged
  • I am unsure / need advice

📜 Does this require a change to the docs?

The changes in this PR:

  • are internal and do not require a docs change
  • are in a state where docs changes are not yet required but will be
  • require changes to docs which are made as part of this PR
  • require changes to docs which are not made in this PR
    • Provide more detail here
  • I am unsure / need advice

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

The changes in this PR:

  • do not affect the execution graph
  • affected the execution graph, and the turbo.json's have been updated to reflect this
  • I am unsure / need advice

⚠️ Known issues

🐾 Next steps

🛡 What tests cover this?

❓ How to test this?

  1. Checkout the branch / view the deployment
  2. Try X
  3. Confirm that Y

📹 Demo

lunelson and others added 5 commits August 28, 2026 14:32
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Lu Nelson <ln@hash.ai>
Signed-off-by: Lu Nelson <ln@hash.ai>
… and evidence

One ChatAgent, one runbook skill (defineSkill + on-disk Markdown), headless
createFlueClient drive with artifact recovery from history(). Hermetic through
line green (IR recovered, parseSDCPNFile ok); two real-model runs recorded with
construct rejection documented (weight-0 exclusive arcs, malformed types/
parameters). MISSION.md stays live; acceptance is a human call. SIDE_QUEST.md
opens the validated-construction follow-up (Petrinaut-owned contracts, minimal
tool subset, reuse of run 2's IR). HANDOFF.md carries the full session state.
@vercel

vercel Bot commented Aug 28, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
petrinaut Ready Ready Preview Aug 28, 2026 4:30pm
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
hash Ignored Ignored Preview Aug 28, 2026 4:30pm
hashdotdesign-tokens Ignored Ignored Preview Aug 28, 2026 4:30pm
petrinaut-docs Ignored Ignored Preview Aug 28, 2026 4:30pm

Request Review

@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 area/tests New or updated tests area/apps labels Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

export const PN_JSON_FENCE = "pn-json";

const fencedBlockPattern = (language: string): RegExp =>
new RegExp("```" + language + "\\s*\\n([\\s\\S]*?)```", "g");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Semgrep identified an issue in your code:
RegExp() called with a language function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled input, consider performing input validation or use a regex checking/sanitization library such as https://www.npmjs.com/package/recheck to verify that the regex does not appear vulnerable to ReDoS.

Dataflow graph
flowchart LR
    classDef invis fill:white, stroke: none
    classDef default fill:#e7f5ff, color:#1c7fd6, stroke: none

    subgraph File0["<b>apps/brunch-agent/src/runbook-artifacts.ts</b>"]
        direction LR
        %% Source

        subgraph Source
            direction LR

            v0["<a href=https://github.com/hashintel/hash/blob/f27922ecdf06e025aa896cf0b3ef092b8c6e4635/apps/brunch-agent/src/runbook-artifacts.ts#L9 target=_blank style='text-decoration:none; color:#1c7fd6'>[Line: 9] language</a>"]
        end
        %% Intermediate

        subgraph Traces0[Traces]
            direction TB

            v2["<a href=https://github.com/hashintel/hash/blob/f27922ecdf06e025aa896cf0b3ef092b8c6e4635/apps/brunch-agent/src/runbook-artifacts.ts#L9 target=_blank style='text-decoration:none; color:#1c7fd6'>[Line: 9] language</a>"]
        end
        %% Sink

        subgraph Sink
            direction LR

            v1["<a href=https://github.com/hashintel/hash/blob/f27922ecdf06e025aa896cf0b3ef092b8c6e4635/apps/brunch-agent/src/runbook-artifacts.ts#L10 target=_blank style='text-decoration:none; color:#1c7fd6'>[Line: 10] new RegExp(&quot;```&quot; + language + &quot;\\s*\\n([\\s\\S]*?)```&quot;, &quot;g&quot;)</a>"]
        end
    end
    %% Class Assignment
    Source:::invis
    Sink:::invis

    Traces0:::invis
    File0:::invis

    %% Connections

    Source --> Traces0
    Traces0 --> Sink


Loading

To resolve this comment:

🔧 No guidance has been designated for this issue. Fix according to your organization's approved methods.

💬 Ignore this finding

Reply with Semgrep commands to ignore this finding.

  • /fp <comment> for false positive
  • /ar <comment> for acceptable risk
  • /other <comment> for all other reasons

Alternatively, triage in Semgrep AppSec Platform to ignore the finding created by detect-non-literal-regexp.

You can view more details about this finding in the Semgrep AppSec Platform.

export const PN_JSON_FENCE = "pn-json";

const fencedBlockPattern = (language: string): RegExp =>
new RegExp("```" + language + "\\s*\\n([\\s\\S]*?)```", "g");
lunelson and others added 3 commits August 28, 2026 15:14
Package the modelling skill through Flue, prove bounded headless construction, and record the real-model schema bridge failure for Mission 5.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps 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.

2 participants