Skip to content
← Free FDE training guides

Free learning / 90-minute team practice

First scoped-context receiving session

A paired Python session: compare identical happy-path context with actual permission checks, remove a grant and give identity, data, model and action owners the remaining work.

No account needed. Use your own copy for writing and keep the original as a reference.

Engineering lab library / Run locally

Choose your next agent lab.

Start with the durable workflow reference, then choose the boundary you want to test. Open its walkthrough for setup, commands and expected observations.

Synthetic records. No provider key or model inference. Runs locally with the standard library.

  1. Start here / Python 3.11+ · Standard library

    Scoped context receiving fixture

    Compare allowed and removed-grant context without mistaking supplied identity or a successful read for authentication evidence.

    Python 3.11+ · Standard library · In-memory SQLite · Supplied fictional principal · No login, model or network

Prepare Python 3.11+ and the complete tool-boundaries kit before this ninety-minute paired practice. Preview the prepared agenda before explicitly choosing whether to use it. This is a planning estimate, excluding setup, reading and breaks. An agenda creates no assignment, attendance or training entitlement; leave unavailable execution unrun.

Each participant extracts a separate folder and keeps the unchanged identity companion and first tool-boundary worksheet. The stated commands use standard-library Python and in-memory SQLite. No packages, model, account, network or real records are required. Redirected JSON files are local reports; use new filenames to preserve an earlier attempt.

Keep individual predictions, exact commands, first output, assistance and later corrections. Supplied output is not another person's run. Declare prior reading, combined roles or solo self-review. These published conditions are practice, not a held-out test of unaided performance.

Minutes 0–35: establish the read boundary

Follow worksheet sections 1–3. The rounds and review below replace its section 4. Keep the five read reports and complete-versus-missing-tenant join comparison. Retain the useful allowed control, refused scope change, no permitted row and first delivered observation after grant removal. Do not treat a safe not_available response as proof that the requested document does not exist.

Locate Principal, read_document and the complete grant/document relationship in the original source. The host supplies a fictional principal; its constructor does not verify identity. The requested tenant is untrusted data, while the read action is fixed by the function. Bound SQL parameters do not repair a missing tenant relationship. Both receiving rounds use the unchanged original, not an optional repaired comparison copy.

Minutes 35–55: receive the happy path and its limits

A builds and B receives. A supplies the unchanged program and boundary notes. B predicts both paths' context, reads and unattempted candidates before running:

Code example
python3 fde-identity-boundary-lab.py context-selection --candidate-order north-first --north-grant present > receiving-present.json

The program compares two independently reset local databases. The deliberately_unchecked path reads a candidate without authorization; the scoped path calls read_document before adding permitted data to context. These are two teaching policies, not two production services.

With North/P-7 first and its read grant present, both paths produce the same North context. Each makes one SQL read and leaves two candidates unattempted. That matching output does not establish that both enforced permission. B locates the actual calls and attempt states: checks_bypassed versus allowed. Unattempted candidates provide no observation of their access behavior.

Retain B's prediction, command, JSON and explanation before A discusses the result. The context is a local list, not a prompt sent to a model. The comparison report declares model_calls: 0 and establishes no generated-answer quality.

Minutes 55–75: swap roles and remove only the read grant

B now builds and A receives. Keep the trusted North principal and north-first candidate order. A predicts the effect of changing only the grant fixture:

Code example
python3 fde-identity-boundary-lab.py context-selection --candidate-order north-first --north-grant revoked > receiving-revoked.json

Compare the original and changed reports without replacing either. Here revoked removes the North read grant before candidate selection. It does not revoke a real login or race a request already in progress.

PathActual observation to locateRemaining limit
Deliberately uncheckedOne SQL read still adds North/P-7 to context; the other two candidates are unattemptedA happy-path result concealed missing authorization
ScopedNorth/P-7 has no permitted row; South/P-7 is refused before a query; North/P-8 has no permitted rowTwo actual SQL reads yield empty context; no model response is observed

A locates all three scoped attempts, the unchanged trusted principal, actual sql_reads, empty context and zero model_calls. Do not report that the scoped path made no database queries. Refusing the South request before SQL is different from querying North and finding no permitted row.

The earlier present-grant report remains useful evidence of an earlier condition; it does not authorize this later read. Removing access cannot erase information already delivered. Each path uses a fresh sequential fixture, so these runs do not establish cache invalidation, concurrent revocation or distributed safety. Exit 0 means the local report ran, including denied cases. A Python/import error or interrupted run is a different condition, not the expected access result.

Minutes 75–90: give the next owners answerable work

Each receiver explains their own evidence before the team agrees a bounded receiving decision. Keep actual rows and debug traces in the synthetic exercise; their detailed states are not a proposed public error or logging contract.

Receiving roleWork still to establish
Host/identity ownerVerify the caller and active workspace in the real host; a supplied principal is not that evidence.
Data/service ownerEnforce the complete current resource/action relationship and define safe responses and operational diagnostics.
Context/model ownerBind permitted source revisions to an actual model request and define supported-answer cases; no inference ran here.
Write ownerSpecify separate update permission, resource-version conflict, duplicate handling and uncertain-effect reconciliation before implementing an update. A read grant does not permit it.
Pod leadRetain cache, concurrency and action requirements as unrun; name the next bounded test, owner and update before committing delivery.

One copy per participant:

Text example
Alias / actual role / prior reading and help:
My first prediction / exact file revision and command:
Actual context / attempt states / SQL-read references / model_calls:
Attempted and unattempted candidates / what they establish:
Receiving action I performed / assistance or author takeover:
My first explanation / later correction and its evidence:
Unrun identity, model or write requirement / accountable role:
Next agreed test, expected behavior and update:

Assign actual people later. This practice creates no authenticated identity, MCP connection, production permission, independent delivery, qualification or client placement. Preserve each person's observations and unrun receiving work.

Before you move on

Keep the evidence of your work.

  • Individual predictions, exact commands, JSON, assistance and corrections.
  • Attempted and unattempted candidates beside actual SQL and context evidence.
  • Remaining identity, model, write and delivery requirements with accountable roles.

Keep these in your own working copy. Reading this page does not save work or record completion.

Suggested next free session

Identity 101: a login is not permission

Inspect the complete identity and permission boundary before designing a real host or service. This is a suggested sequence; choose the practice that addresses your current gap.

Open the next free guide

Free account

Give your practice a home.

Try a role exercise with account drafts and a downloadable worksheet. Keep the files you made in this guide in your own working copy.

Create a free learning account

Guided training · by application

Build toward a program.

Request structured lessons and a training seat. Scope, schedule, feedback arrangements and tuition are confirmed in writing before you commit.

Explore a training application
Have Academy access?

Use your existing training seat to open worked explanations and practice in the related lesson. Creating a free account does not grant a seat.

Open the related Academy lesson →
Back to top ↑