Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
cf16bb7
FE-808 persist graph node ordinals
lunelson Jun 4, 2026
bf216a6
FE-808 normalize graph approval basis
lunelson Jun 4, 2026
8f31a06
FE-808 resolve graph references by code
lunelson Jun 4, 2026
e751faf
FE-808 enforce supersession acyclicity
lunelson Jun 4, 2026
4f374e7
FE-808 split active graph projection
lunelson Jun 4, 2026
2463bfc
Align probe transcripts with Pi context rendering
lunelson Jun 4, 2026
8761a5f
FE-808 canonicalize graph tool handles
lunelson Jun 4, 2026
bee2a4b
Stub projection and format topology for LLM context
lunelson Jun 4, 2026
75c48b7
Thread representative LLM projection seams
lunelson Jun 4, 2026
a5417bb
Apply remaining context rendering cleanup
lunelson Jun 4, 2026
13b963a
FE-808: Normalize graph tool outcomes
lunelson Jun 4, 2026
97c718b
FE-808: Add existing-code graph probe
lunelson Jun 4, 2026
4112e24
FE-808: Add retry diagnostics graph probe
lunelson Jun 4, 2026
43d6254
FE-808: Add ambiguity no-overcommit probe
lunelson Jun 4, 2026
1b1ff99
FE-808: Close graph commit planner judo findings
lunelson Jun 4, 2026
4f6dbc1
Add fixture seed loader and consolidate Bilal-port seed fixtures
lunelson Jun 4, 2026
2c9912b
Self-validate ported seeds against the real loader before writing
lunelson Jun 4, 2026
e76360d
plan: add dev-seed-fixtures parallel frontier
lunelson Jun 4, 2026
5b8d3a5
FE-808 validate createNode basis
lunelson Jun 4, 2026
3083ac4
agent and skill guidance re not deleting stubs
lunelson Jun 4, 2026
03a8137
FE-808: Sync graph resilience closeout
lunelson Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .agents/skills/ln-build/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ Honor the repo's pre-release posture: if the current schema, fixture shape, dumm

No speculative abstractions. Only extract when two concrete cases force it. Do not anticipate later tests or build shape-only scaffolding; let the current behavioral test pull the interface into existence.

Do not delete comment-rich empty source files as cleanup unless the current card names them or the deletion proof in `AGENTS.md` §intentional topology stubs is satisfied. Passing import/build checks is insufficient proof; ask the user when the topology intent is unclear.

The card's Expected touched paths are tentative, not binding. If the build needs to diverge — a path you didn't anticipate, a file the work doesn't actually need — proceed and note the divergence briefly when updating the card's status. Significant divergence (touching new directories or seams not declared) is a signal to pause and re-check the overlap-as-independence-test against other active scope files for the same frontier.

## Refactor
Expand Down Expand Up @@ -202,7 +204,7 @@ Other volatile artifacts are **review-before-delete**, not automatic cleanup:
- `memory/REFACTOR.md` — delete only when every listed refactor step is done/dropped and no future sequence depends on it.
- Provisional docs outside `memory/` (for example `docs/**/provisional*.md`, handoff plans, spike plans, or exploration inventories) — do **not** delete during `ln-build` cleanup unless the user explicitly asks or you first prove that all remaining future-facing inventory has been absorbed elsewhere. If only the current card is done but the artifact still contains later affordances, open questions, or scoping input, update it instead of deleting it.

Before deleting any file, name the file, state why no future agent would need it, and prefer asking the user when uncertain. Do not create archive copies, numbered handoffs, or completion-pointer files.
Before deleting any file, name the file, state why no future agent would need it, and prefer asking the user when uncertain. For source files whose only runtime content is `export {}` plus comments, read the comments as design payload and apply `AGENTS.md` §intentional topology stubs before proposing deletion. Do not create archive copies, numbered handoffs, or completion-pointer files.

## Routing

Expand Down
2 changes: 2 additions & 0 deletions .agents/skills/ln-judo-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Look for **code judo**: restructurings that preserve behavior while making the i

This is a strict maintainability audit, not a cleanup pass. Do not stop at "this could be a bit cleaner." Do not rubber-stamp working code that leaves the codebase messier. Use the repo's pre-release posture: retire stale concepts, obsolete code paths, and compatibility scaffolding rather than protecting them.

Do not apply deletion-judo to intentional topology stubs. A comment-rich `export {}` source file may be a planned public seam / topology contract; see `AGENTS.md` §intentional topology stubs. Deleting it is a valid judo move only when the documented intent is obsolete or absorbed, not merely because the file is unused today.

## Input

What to review: $ARGUMENTS
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/ln-plan/references/earned.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This is not "proving-posture sequencing with bigger steps." The decision kernel
- **Materialize** — make a settled architectural decision visible in topology: file or directory placement, sub-tree split per [AGENTS.md](../../../../AGENTS.md) §fractal sub-tree pattern, or a topology README that locks a SPEC decision to a directory.
- **Consolidate** — bring scattered cognates of the same concept into one canonical site.
- **Name canonically** — collapse aliases, near-synonyms, or drift terms to one term; update callers, docs, and tests in the same slice.
- **Delete-as-progress** — retire obsolete code paths, fixtures, dummy data, compatibility shims, and superseded docs. Deletion is a first-class closure outcome, not janitorial overflow.
- **Delete-as-progress** — retire obsolete code paths, fixtures, dummy data, compatibility shims, and superseded docs. Deletion is a first-class closure outcome, not janitorial overflow. Comment-rich `export {}` source files are not deletion candidates on unusedness alone; apply `AGENTS.md` §intentional topology stubs and prove the documented seam is obsolete or absorbed.
- **Retire bridges / aliases / dual paths** — under `migration: free-rewrite`, eliminate adapters, shims, and expand/contract scaffolds that have outlived their crossing. The migration scheme is not the system. (See `~/.pi/agent/APPEND_SYSTEM.md` §bridge-as-permanence.)
- **Take the bigger step** — landing a multi-file or multi-layer closure in one slice when the thinness instinct is producing redundant proof rather than closure.

Expand Down
2 changes: 2 additions & 0 deletions .agents/skills/ln-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Explore the codebase. Surface structural improvement opportunities. Be opinionat

Use the repo's pre-release posture: reward conceptual clarity over compatibility scaffolding, and treat unnecessary preservation as review debt. Look for stale code, obsolete fixtures, legacy terms, and compatibility paths that should be deleted rather than protected.

Deletion guard: before recommending deletion of a source file that has no runtime exports/imports but does have explanatory comments, apply `AGENTS.md` §intentional topology stubs. Do not treat `export {}`, zero imports, or passing import/build checks as proof of false topology. A deletion finding for such a file must name the contradicted/retired SPEC/PLAN/README claim, or the implemented replacement that absorbs the documented seam; otherwise route it as an intent-verification question, not a delete recommendation.

## Input

What to review: $ARGUMENTS
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"schemaVersion": 1,
"probeId": "propose-graph-commit",
"runId": "2026-06-04-ambiguity-no-overcommit",
"generatedAt": "2026-06-04T14:50:13.707Z",
"mission": "Prove the propose-graph strategy can commit graph truth through commit_graph.",
"evaluationFocus": "A14-L ambiguity handling without unsupported graph overcommit.",
"scenarioId": "ambiguity-no-overcommit",
"success": true,
"cwd": "/var/folders/2c/ptn6jcrj61lck_yzfz_p3b5m0000gn/T/brunch-propose-graph-commit-qHP5ki",
"specId": 1,
"sessionId": "019e931d-0757-7c85-874a-186bffe8dea6",
"prompt": "Brunch A14-L ambiguity/no-overcommit probe.\n\nThe user says: \"Maybe our launch process has some risk somewhere; please update the spec graph if that seems useful.\"\n\nUse read_graph once in overview mode. Because the prompt does not provide a concrete accepted graph fact, do not call commit_graph. Instead, respond with a concise clarification request or explanation that there is not enough accepted graph truth to commit yet.",
"model": "gpt-5.5",
"maxAttempts": 2,
"attemptCount": 0,
"retryCount": 0,
"firstAttemptStatus": "not_called",
"finalStatus": "not_called",
"attempts": [],
"finalGraph": {
"nodeCount": 0,
"edgeCount": 0,
"lsn": 2
},
"committedNodeTitles": [],
"committedNodes": [],
"projectedCodeEvidence": {
"codes": [],
"seenInTranscript": true,
"usedInCommitParams": true
},
"ambiguityOutcome": "no_op_or_clarification",
"friction": [],
"artifacts": {
"runDir": ".fixtures/runs/propose-graph-commit/2026-06-04-ambiguity-no-overcommit",
"sessionJsonl": ".fixtures/runs/propose-graph-commit/2026-06-04-ambiguity-no-overcommit/session.jsonl",
"transcriptMarkdown": ".fixtures/runs/propose-graph-commit/2026-06-04-ambiguity-no-overcommit/transcript.md",
"reportJson": ".fixtures/runs/propose-graph-commit/2026-06-04-ambiguity-no-overcommit/report.json"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{"type":"session","version":3,"id":"019e931d-0757-7c85-874a-186bffe8dea6","timestamp":"2026-06-04T14:50:13.719Z","cwd":"/var/folders/2c/ptn6jcrj61lck_yzfz_p3b5m0000gn/T/brunch-propose-graph-commit-qHP5ki"}
{"type":"custom","customType":"brunch.session_binding","data":{"schemaVersion":1,"specId":1},"id":"4992f665","parentId":null,"timestamp":"2026-06-04T14:50:13.719Z"}
{"type":"session_info","id":"f6c45104","parentId":"4992f665","timestamp":"2026-06-04T14:50:13.720Z","name":"A14 propose-graph commit proof — session 1"}
{"type":"custom","customType":"brunch.agent_runtime_state","data":{"schemaVersion":1,"reason":"switch","state":{"schemaVersion":1,"operationalMode":"elicit","agentStrategy":"propose-graph","agentLens":"intent","agentGoal":"commit-converge"},"previous":{"schemaVersion":1,"operationalMode":"elicit","agentStrategy":"auto","agentLens":"auto","agentGoal":"grounding-advance"},"source":"extension"},"id":"4092686c","parentId":"f6c45104","timestamp":"2026-06-04T14:50:13.720Z"}
{"type":"model_change","id":"35934d3c","parentId":"4092686c","timestamp":"2026-06-04T14:50:13.734Z","provider":"openai-codex","modelId":"gpt-5.5"}
{"type":"thinking_level_change","id":"2c1b1e3a","parentId":"35934d3c","timestamp":"2026-06-04T14:50:13.734Z","thinkingLevel":"medium"}
{"type":"message","id":"be87e6f6","parentId":"2c1b1e3a","timestamp":"2026-06-04T14:50:13.742Z","message":{"role":"user","content":[{"type":"text","text":"Brunch A14-L ambiguity/no-overcommit probe.\n\nThe user says: \"Maybe our launch process has some risk somewhere; please update the spec graph if that seems useful.\"\n\nUse read_graph once in overview mode. Because the prompt does not provide a concrete accepted graph fact, do not call commit_graph. Instead, respond with a concise clarification request or explanation that there is not enough accepted graph truth to commit yet."}],"timestamp":1780584613735}}
{"type":"message","id":"5de4ce33","parentId":"be87e6f6","timestamp":"2026-06-04T14:50:16.090Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_YcvsKdc4mmvUz81Tevwu8YbJ|fc_007707ab5d551f91016a2190a8138881958817b595c6d97929","name":"read_graph","arguments":{"mode":"overview"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.5","usage":{"input":4342,"output":18,"cacheRead":0,"cacheWrite":0,"totalTokens":4360,"cost":{"input":0.02171,"output":0.00054,"cacheRead":0,"cacheWrite":0,"total":0.02225}},"stopReason":"toolUse","timestamp":1780584613749,"responseId":"resp_007707ab5d551f91016a2190a74f088195b48f92b7dd9f2348"}}
{"type":"message","id":"69d8e3b5","parentId":"5de4ce33","timestamp":"2026-06-04T14:50:16.092Z","message":{"role":"toolResult","toolCallId":"call_YcvsKdc4mmvUz81Tevwu8YbJ|fc_007707ab5d551f91016a2190a8138881958817b595c6d97929","toolName":"read_graph","content":[{"type":"text","text":"The graph is empty (no nodes or edges)."}],"details":{"nodes":[],"edges":[],"nodeCount":0,"edgeCount":0,"lsn":2},"isError":false,"timestamp":1780584616092}}
{"type":"message","id":"ef816515","parentId":"69d8e3b5","timestamp":"2026-06-04T14:50:18.216Z","message":{"role":"assistant","content":[{"type":"text","text":"I don’t have enough accepted graph truth to commit anything yet. The graph is empty, and “some risk somewhere” is too ambiguous to turn into a durable spec node without overcommitting.\n\nPlease clarify the concrete launch risk, e.g. affected process step, failure mode, likelihood/impact, or required mitigation.","textSignature":"{\"v\":1,\"id\":\"msg_007707ab5d551f91016a2190a91ad481959abccff0908eeb2c\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.5","usage":{"input":4381,"output":68,"cacheRead":0,"cacheWrite":0,"totalTokens":4449,"cost":{"input":0.021905,"output":0.00204,"cacheRead":0,"cacheWrite":0,"total":0.023945}},"stopReason":"stop","timestamp":1780584616093,"responseId":"resp_007707ab5d551f91016a2190a8944c8195a4375d4db5396901"}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Transcript — session.jsonl

## 1. User

Brunch A14-L ambiguity/no-overcommit probe.

The user says: "Maybe our launch process has some risk somewhere; please update the spec graph if that seems useful."

Use read_graph once in overview mode. Because the prompt does not provide a concrete accepted graph fact, do not call commit_graph. Instead, respond with a concise clarification request or explanation that there is not enough accepted graph truth to commit yet.

## 2. Tool result: read_graph

The graph is empty (no nodes or edges).

## 3. Assistant

I don’t have enough accepted graph truth to commit anything yet. The graph is empty, and “some risk somewhere” is too ambiguous to turn into a durable spec node without overcommitting.

Please clarify the concrete launch risk, e.g. affected process step, failure mode, likelihood/impact, or required mitigation.


## Raw session JSONL

```jsonl
{"type":"session","version":3,"id":"019e931d-0757-7c85-874a-186bffe8dea6","timestamp":"2026-06-04T14:50:13.719Z","cwd":"/var/folders/2c/ptn6jcrj61lck_yzfz_p3b5m0000gn/T/brunch-propose-graph-commit-qHP5ki"}
{"type":"custom","customType":"brunch.session_binding","data":{"schemaVersion":1,"specId":1},"id":"4992f665","parentId":null,"timestamp":"2026-06-04T14:50:13.719Z"}
{"type":"session_info","id":"f6c45104","parentId":"4992f665","timestamp":"2026-06-04T14:50:13.720Z","name":"A14 propose-graph commit proof — session 1"}
{"type":"custom","customType":"brunch.agent_runtime_state","data":{"schemaVersion":1,"reason":"switch","state":{"schemaVersion":1,"operationalMode":"elicit","agentStrategy":"propose-graph","agentLens":"intent","agentGoal":"commit-converge"},"previous":{"schemaVersion":1,"operationalMode":"elicit","agentStrategy":"auto","agentLens":"auto","agentGoal":"grounding-advance"},"source":"extension"},"id":"4092686c","parentId":"f6c45104","timestamp":"2026-06-04T14:50:13.720Z"}
{"type":"model_change","id":"35934d3c","parentId":"4092686c","timestamp":"2026-06-04T14:50:13.734Z","provider":"openai-codex","modelId":"gpt-5.5"}
{"type":"thinking_level_change","id":"2c1b1e3a","parentId":"35934d3c","timestamp":"2026-06-04T14:50:13.734Z","thinkingLevel":"medium"}
{"type":"message","id":"be87e6f6","parentId":"2c1b1e3a","timestamp":"2026-06-04T14:50:13.742Z","message":{"role":"user","content":[{"type":"text","text":"Brunch A14-L ambiguity/no-overcommit probe.\n\nThe user says: \"Maybe our launch process has some risk somewhere; please update the spec graph if that seems useful.\"\n\nUse read_graph once in overview mode. Because the prompt does not provide a concrete accepted graph fact, do not call commit_graph. Instead, respond with a concise clarification request or explanation that there is not enough accepted graph truth to commit yet."}],"timestamp":1780584613735}}
{"type":"message","id":"5de4ce33","parentId":"be87e6f6","timestamp":"2026-06-04T14:50:16.090Z","message":{"role":"assistant","content":[{"type":"toolCall","id":"call_YcvsKdc4mmvUz81Tevwu8YbJ|fc_007707ab5d551f91016a2190a8138881958817b595c6d97929","name":"read_graph","arguments":{"mode":"overview"}}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.5","usage":{"input":4342,"output":18,"cacheRead":0,"cacheWrite":0,"totalTokens":4360,"cost":{"input":0.02171,"output":0.00054,"cacheRead":0,"cacheWrite":0,"total":0.02225}},"stopReason":"toolUse","timestamp":1780584613749,"responseId":"resp_007707ab5d551f91016a2190a74f088195b48f92b7dd9f2348"}}
{"type":"message","id":"69d8e3b5","parentId":"5de4ce33","timestamp":"2026-06-04T14:50:16.092Z","message":{"role":"toolResult","toolCallId":"call_YcvsKdc4mmvUz81Tevwu8YbJ|fc_007707ab5d551f91016a2190a8138881958817b595c6d97929","toolName":"read_graph","content":[{"type":"text","text":"The graph is empty (no nodes or edges)."}],"details":{"nodes":[],"edges":[],"nodeCount":0,"edgeCount":0,"lsn":2},"isError":false,"timestamp":1780584616092}}
{"type":"message","id":"ef816515","parentId":"69d8e3b5","timestamp":"2026-06-04T14:50:18.216Z","message":{"role":"assistant","content":[{"type":"text","text":"I don’t have enough accepted graph truth to commit anything yet. The graph is empty, and “some risk somewhere” is too ambiguous to turn into a durable spec node without overcommitting.\n\nPlease clarify the concrete launch risk, e.g. affected process step, failure mode, likelihood/impact, or required mitigation.","textSignature":"{\"v\":1,\"id\":\"msg_007707ab5d551f91016a2190a91ad481959abccff0908eeb2c\",\"phase\":\"final_answer\"}"}],"api":"openai-codex-responses","provider":"openai-codex","model":"gpt-5.5","usage":{"input":4381,"output":68,"cacheRead":0,"cacheWrite":0,"totalTokens":4449,"cost":{"input":0.021905,"output":0.00204,"cacheRead":0,"cacheWrite":0,"total":0.023945}},"stopReason":"stop","timestamp":1780584616093,"responseId":"resp_007707ab5d551f91016a2190a8944c8195a4375d4db5396901"}}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{
"schemaVersion": 1,
"probeId": "propose-graph-commit",
"runId": "2026-06-04-existing-code-ref",
"generatedAt": "2026-06-04T14:43:47.399Z",
"mission": "Prove the propose-graph strategy can commit graph truth through commit_graph.",
"evaluationFocus": "A14-L selected-spec projected-code reference through the default runtime.",
"scenarioId": "existing-code-ref",
"success": true,
"cwd": "/var/folders/2c/ptn6jcrj61lck_yzfz_p3b5m0000gn/T/brunch-propose-graph-commit-7xu0IC",
"specId": 1,
"sessionId": "019e9317-2252-7279-9f8c-37344e811041",
"prompt": "Brunch A14-L probe: the selected specification graph already contains a launch-readiness goal.\n\nUse read_graph once in overview mode. Find the projected code for the existing launch-readiness goal, then use commit_graph to create one new requirement node titled \"Rollback path is documented\" and one legal edge connecting that new requirement to the existing goal by using the existing node's projected code as {existingCode: \"G1\"}. Do not recreate the existing goal. Stop after a successful commit_graph result.",
"model": "gpt-5.5",
"maxAttempts": 2,
"attemptCount": 1,
"retryCount": 0,
"firstAttemptStatus": "success",
"finalStatus": "success",
"attempts": [
{
"index": 1,
"status": "success",
"lsn": 4,
"nodeRefs": {
"n1": 2
},
"edgeIds": [
1
],
"content": "Graph committed successfully (LSN 4).\nNodes created: n1 → R1\nEdges created: #1"
}
],
"finalGraph": {
"nodeCount": 2,
"edgeCount": 1,
"lsn": 4
},
"committedNodeTitles": [
"Selected-spec launch readiness goal",
"Rollback path is documented"
],
"committedNodes": [
{
"code": "G1",
"title": "Selected-spec launch readiness goal"
},
{
"code": "R1",
"title": "Rollback path is documented"
}
],
"projectedCodeEvidence": {
"codes": [
"G1"
],
"seenInTranscript": true,
"usedInCommitParams": true,
"existingCodeEdgePresent": true
},
"friction": [],
"artifacts": {
"runDir": ".fixtures/runs/propose-graph-commit/2026-06-04-existing-code-ref",
"sessionJsonl": ".fixtures/runs/propose-graph-commit/2026-06-04-existing-code-ref/session.jsonl",
"transcriptMarkdown": ".fixtures/runs/propose-graph-commit/2026-06-04-existing-code-ref/transcript.md",
"reportJson": ".fixtures/runs/propose-graph-commit/2026-06-04-existing-code-ref/report.json"
}
}
Loading
Loading