Skip to content

docs: participant guide + symptom-indexed troubleshooting - #27

Merged
Robobc merged 1 commit into
mainfrom
docs/participant-guide
Aug 19, 2026
Merged

docs: participant guide + symptom-indexed troubleshooting#27
Robobc merged 1 commit into
mainfrom
docs/participant-guide

Conversation

@Robobc

@Robobc Robobc commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

What

Two docs a workshop participant needs and the repo didn't have — grepping for "troubleshoot" previously returned nothing.

  • docs/PARTICIPANT_GUIDE.md — the path through the workshop: prerequisites as required/optional (with the things that actually bite: python3.13 by that exact name, bash 4+, Docker not needed), profile chooser, the module table with real timings from live runs, verification by hand, framework selection, platform.yaml, teardown.
  • docs/TROUBLESHOOTING.md — symptom → cause → fix with a symptom index. Every entry is a failure we actually hit: bash 3.2, the npx probe hang, credentials expiring mid-deploy, env creds silently beating AWS_PROFILE, ORG_ID, model IDs aging out, image-tag caching, Unauthorized, HTTP 424, Authorization method mismatch, missing gateway tools, no traces, the 1% X-Ray sample, export-in-use on destroy, the agentic_ai ENI drain.

It leads with the two rules that save the most time: read the container logs first, and CREATE_COMPLETE proves nothing about behaviour.

Product defects found by fact-checking the drafts

I checked every claim against the code before committing. Two turned out to be the wizard overstating what it builds:

  • MODULE_EXPLAIN[A] claimed Memory deploys "semantic + user-preference strategies". The semantic strategy is added only when USE_LONG_TERM_MEMORY=true, which no profile sets — so every guided run was told it got something it didn't.
  • MODULE_EXPLAIN[4] claimed module 4 federates your enterprise IdP and creates 3LO + M2M providers. By default it creates only the gateway M2M provider: federation needs IDP_TYPE set to a non-cognito value (the prompt defaults to cognito), and each 3LO provider needs its client id supplied.
  • README listed Docker as required local tooling, while check_prereqs treats it as optional (images build in CodeBuild). Corrected, and added bash 4+ and the python3.13 name, which it omitted.

Draft errors caught before they shipped

deploy --profile runs cdk deploy --all, not the profile's module sequence · invoke.py --tools asks the gateway, not the agent — and the default orchestrator has no tools, so "what tools do you have?" was a misleading first prompt · security-focused requires ORG_ID · A2A runtimes report protocol A2A, not HTTP · the JWT-verification section applies per-pattern and never to the orchestrator · missing gateway tools are silent in only two conditions, while an AccessDenied on the vault secret fails the invoke outright · test_memory.py uses local credentials so it cannot verify the runtime role.

Verified

  • check-workshop-flow.sh passes — the narration is sed-extracted, so the MODULE_EXPLAIN edits had to stay one physical line each; confirmed the dry run prints the new module 4 and A text.
  • check-deploy-config.sh passes; pytest 99 passed; shellcheck unchanged (2 pre-existing findings).
  • Every relative link and quick-index anchor resolves (checked with GitHub's slug rules); every command checked against the scripts and flags that actually exist.

… doc

Two docs a workshop participant needs and the repo did not have (grep for
"troubleshoot" previously returned nothing).

- docs/PARTICIPANT_GUIDE.md: the path through the workshop. Prerequisites as a
  required/optional table, profile chooser, the module table with REAL timings
  from live runs (module 6 is ~7-8 min of CodeBuild, not a hang), how to verify
  by hand, framework selection, platform.yaml, teardown, and where to read more.
- docs/TROUBLESHOOTING.md: symptom -> cause -> fix, indexed by symptom, with
  every entry drawn from a failure we actually hit — bash 3.2, the npx probe
  hang, expired credentials mid-deploy, env creds silently beating AWS_PROFILE,
  ORG_ID, model IDs aging out, image-tag caching, Unauthorized, HTTP 424,
  Authorization method mismatch, missing gateway tools, no traces, the 1%
  X-Ray sample, export-in-use on destroy, and the agentic_ai ENI drain.
  Leads with the two rules that save the most time: read the container logs,
  and CREATE_COMPLETE proves nothing about behaviour.

Fixes found while fact-checking the drafts against the code — the docs were
right to be checked, and two of these are defects in the product, not the docs:

- MODULE_EXPLAIN[A] claimed Memory deploys "semantic + user-preference
  strategies". The semantic strategy is added only when USE_LONG_TERM_MEMORY
  is true, which no profile sets — so the wizard was overstating what module A
  builds. Narration now says which is conditional and that it costs more.
- MODULE_EXPLAIN[4] claimed module 4 "federates your enterprise IdP ... and
  creates OAuth2 credential providers (3LO + M2M)". By default it creates only
  the gateway M2M provider: federation needs IDP_TYPE set to a non-cognito
  value (the prompt defaults to cognito) and each 3LO provider needs its client
  id supplied. Narration now separates always-on from opt-in.
- README listed Docker as required local tooling; check_prereqs treats it as
  optional because images build in CodeBuild. Corrected, and bash 4+ and the
  python3.13 name added, since both are real requirements it omitted.

Also corrected in the drafts before commit: `--profile` on `deploy` runs
cdk deploy --all rather than the profile's module sequence; `invoke.py --tools`
queries the gateway, not the agent (and the default orchestrator has no tools
at all, so "what tools do you have?" is a misleading first prompt);
security-focused needs ORG_ID; A2A runtimes report protocol A2A, not HTTP;
the JWT verification section applies per-pattern and never to the orchestrator;
missing gateway tools are silent in only two conditions, while an
AccessDenied on the vault secret fails the invoke outright; and
test_memory.py uses local credentials so it cannot verify the runtime role.

Verified:
- check-workshop-flow.sh passes (the narration is sed-extracted, so the
  MODULE_EXPLAIN edits had to stay one physical line each); dry run prints the
  new module 4 and A text.
- check-deploy-config.sh passes; pytest 99 passed; shellcheck unchanged at the
  2 pre-existing findings.
- Every relative link and every quick-index anchor in both docs resolves
  (checked with GitHub's slug rules), and every command was checked against
  the scripts and flags that actually exist.
@Robobc
Robobc merged commit 238b6a0 into main Aug 19, 2026
6 of 7 checks passed
@github-actions

Copy link
Copy Markdown

Commit: 2f0e6ec | Updated: 2026-08-19 16:12:04 UTC

Security Scan Results

Scanner S C H M L I Time Action Result Thresh
bandit 0 0 0 0 0 0 808ms 0 PASSED MED (g)
cdk-nag 0 0 0 0 0 0 7.4s 0 PASSED MED (g)
cfn-nag 0 0 0 0 0 0 7ms 0 PASSED MED (g)
checkov 0 0 0 0 0 0 5.5s 0 PASSED MED (g)
detect-secrets 0 0 0 0 0 0 688ms 0 PASSED MED (g)
grype 0 0 0 0 0 0 1m 2s 0 PASSED MED (g)
npm-audit 0 0 0 0 0 0 169ms 0 PASSED MED (g)
opengrep 0 0 0 0 0 0 17.5s 0 PASSED MED (g)
semgrep 0 0 0 0 0 0 <1ms 0 MISSING MED (g)
syft 0 0 0 0 0 0 2.5s 0 PASSED MED (g)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant