Canvas extensions¶
Define the contract, state, and allowed actions¶
Today's outcome¶
Build one delivery-readiness canvas in the Copilot app.
Record:
- the approved contract;
- one direct update;
- one agent-requested update;
- one rejected update and recovery;
- one human review decision.
Access policy¶
The lab requires:
- GitHub Copilot app access;
- the built-in
/create-canvasskill; - approval for the chosen extension scope.
If app access or the skill is missing, stop the lab. If project scope is unavailable, use user scope. Do not install a replacement or move data to an unapproved surface.
Choose the right customization¶
| Need | Use |
|---|---|
| Repository convention | Instructions |
| Repeatable procedure | Skill |
| Specialist behavior | Custom agent |
| External tool or data | MCP server |
| Shared interactive artifact | Canvas |
| Packaged customizations | Plugin |
A canvas is useful when people and an agent need to inspect or change the same visible state.
Canvas anatomy¶
shared state
├─ human actions in the interface
├─ agent-callable capabilities
└─ validation before every change
The contract names all four parts before implementation starts.
Worked contract¶
| Part | Delivery-readiness rule |
|---|---|
| State | item, status, review flag, evidence |
| Status | planned, in-progress, review, ready |
| Human actions | set status, flag review, add evidence |
| Agent capabilities | read board, update one named item, list flagged items |
| Validation | known item, accepted status, evidence before ready |
Authority stays narrow¶
Safe:
- read the current board;
- update one named item;
- list items flagged for review.
Out of scope:
- deployment;
- external writes;
- credentials;
- hidden data imports;
- broad actions such as "manage the project."
Prepared demo inputs¶
| ID | Item | Start state | Evidence |
|---|---|---|---|
| DOC-101 | Draft operator guide | planned |
none |
| API-204 | Add retry metric | in-progress |
test log |
| WEB-318 | Check empty state | review |
preview |
All names and evidence are synthetic.
Prepared demo sequence¶
- Run the local contract tests.
- Create the canvas from the worked prompt.
- Move
WEB-318toreadywith a visible control. - Ask the agent to move
API-204toreview. - Ask for
DOC-101to move toready. - Show the rejection, add evidence, and retry.
Creation prompt¶
/create-canvas
Create a delivery-readiness canvas from @prepared-items.json.
Use the contract in @canvas-contract.md.
People can add evidence and update one item.
Copilot can read the board, update one named item, and list review flags.
Reject unknown items or statuses. Require evidence before ready.
Do not connect external systems.
Choose project scope only when .github/extensions is allowed. Otherwise use user
scope.
Visible and agent-requested changes¶
The same state must change through both paths:
| Path | Evidence |
|---|---|
| Human control | The item visibly changes in the canvas |
| Agent capability | The named item changes and the response matches the canvas |
If the response and visible state disagree, stop and inspect the artifact.
Rejection is part of the design¶
Request:
Expected:
A safe canvas keeps the state unchanged and explains the rule.
Recovery keeps the rule¶
- Add synthetic evidence to
DOC-101. - Retry the same transition.
- Check that
readyis now accepted. - Record before, rejection, correction, and after state.
Keep validation in place when you fix the demo.
Review the generated extension¶
Check:
- state fields and defaults;
- visible actions;
- agent-callable capabilities;
- dependencies and persisted data;
- owner and reviewer;
- retirement trigger.
Remove anything the contract did not request.
Source of truth¶
The canvas is a working artifact, not an automatic system of record.
If another system owns the data:
- label the canvas as a projection;
- record refresh or reconciliation rules;
- keep external writes outside this lab.
Peer decision¶
The reviewer chooses:
- approve when the recorded results match the contract;
- revise when the correction fits the contract;
- pause when access, ownership, data, or behavior is unresolved.
Lab handoff¶
Use one contract and one prepared data set for the full two hours.