Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3256 commits
Select commit Hold shift + click to select a range
56f9bc0
feat(compaction): offline quality-veto harness (slice 1)
philmerrell Sep 25, 2026
905b970
docs(compaction): record the harness, the control, and the prod readout
philmerrell Sep 25, 2026
933c2fd
fix(compaction): read the head-of-turn cache gap from before any save
philmerrell Sep 25, 2026
101e573
test(compaction): flip the harness tripwire now the restore path applies
philmerrell Sep 25, 2026
642d380
fix: teardown polls long enough for one run; name the Agents page ico…
philmerrell Sep 25, 2026
cc72120
Merge pull request #1309 from Boise-State-Development/feature/exempt-…
philmerrell Sep 25, 2026
76f625b
Merge pull request #1310 from Boise-State-Development/fix/agent-stdou…
philmerrell Sep 25, 2026
a51dccb
Merge pull request #1313 from Boise-State-Development/fix/teardown-po…
philmerrell Sep 25, 2026
0938f2d
Merge pull request #1311 from Boise-State-Development/feature/compact…
philmerrell Sep 25, 2026
c1eee6c
Merge pull request #1312 from Boise-State-Development/feature/compact…
philmerrell Sep 25, 2026
224ae9e
feat(memory): canonical memory-file format and save validation (Share…
philmerrell Sep 25, 2026
525efbf
feat(memory): save pipeline and FILEVER history (Shared Projects 2.3b)
philmerrell Sep 25, 2026
1958c83
fix(observability): keep conversation content out of runtime OTEL logs
philmerrell Sep 25, 2026
651f348
Wire PLATFORM_SELF_SERVICE_ENABLED flag into infra (dev-only, opt-in)…
DerrickF Sep 25, 2026
c4f83e4
Merge pull request #1315 from Boise-State-Development/feature/memory-…
philmerrell Sep 25, 2026
aa6739c
Merge branch 'develop' into feature/memory-save-pipeline
philmerrell Sep 25, 2026
b7575d6
Merge pull request #1317 from Boise-State-Development/fix/otel-conten…
philmerrell Sep 25, 2026
198191f
test(infra): find app-api's CountTokens grant across every IAM resour…
philmerrell Sep 25, 2026
9350c41
feat(compaction): harness arms and knobs for scoring summary compression
philmerrell Sep 25, 2026
5c820ef
fix(observability): widen unhealthy-host alarm to a sustained 20-min …
DerrickF Sep 25, 2026
35d6ef9
fix(ingestion): skip agent icon uploads instead of ingesting them as …
philmerrell Sep 25, 2026
d6c5c5a
docs(memory): production read-path findings for the Phase 0 baseline
philmerrell Sep 25, 2026
d48450b
fix(kb): stop the reconciler resurrecting torn-down KB records
philmerrell Sep 25, 2026
5e31e2e
fix(a11y): name icon-only buttons on admin connector pages (#1318)
philmerrell Sep 25, 2026
291a55c
docs(compaction): the quality veto ran — the cut passes, the compress…
philmerrell Sep 25, 2026
d30ec34
Merge pull request #1316 from Boise-State-Development/feature/memory-…
philmerrell Sep 25, 2026
73bddff
Merge pull request #1320 from Boise-State-Development/fix/agent-icon-…
philmerrell Sep 25, 2026
d14540b
docs(shared-projects): record 2.3 dev validation and carry 2.4 follow…
philmerrell Sep 25, 2026
1d23d0a
Fix: grant runtime write access to user-settings for set_default_mode…
DerrickF Sep 25, 2026
3fdc05a
feat(compaction): screen candidate summarizers in the quality harness
philmerrell Sep 25, 2026
203d1f4
docs(compaction): screening results — Nova 2 Lite, and extract-then-c…
philmerrell Sep 25, 2026
926252d
Merge pull request #1324 from Boise-State-Development/docs/shared-pro…
philmerrell Sep 25, 2026
9ec5a30
Merge pull request #1322 from Boise-State-Development/fix/kb-reconcil…
philmerrell Sep 25, 2026
c0f9f36
Merge pull request #1321 from Boise-State-Development/docs/memory-bas…
philmerrell Sep 25, 2026
530ad01
Merge pull request #1323 from Boise-State-Development/feature/compact…
philmerrell Sep 25, 2026
dfae8db
fix(inference-api): keep MCP tool arguments and results out of trace …
philmerrell Sep 25, 2026
1345126
feat(compaction): default the summary model to Nova 2 Lite
philmerrell Sep 25, 2026
e6855ca
chore(harness): add a pinned Nova Micro compression arm
philmerrell Sep 25, 2026
3e3bc56
fix(kb): stop late writes recreating removed KBTOMB# and DOC# rows
philmerrell Sep 25, 2026
cb2515f
fix: send temperature without topP on side-channel converse calls
philmerrell Sep 25, 2026
2053fda
feat(memory): project-scoped memory spaces (Shared Projects 2.4a)
philmerrell Sep 25, 2026
de5e1ca
docs(kaizen): queue the prod check for the reconciler teardown guard
philmerrell Sep 25, 2026
9dc5f23
Merge pull request #1327 from Boise-State-Development/fix/kb-ghost-ro…
philmerrell Sep 25, 2026
9a0dd64
Merge pull request #1326 from Boise-State-Development/fix/otel-mcp-sp…
philmerrell Sep 25, 2026
dbe66b6
Merge pull request #1329 from Boise-State-Development/feature/kaizen-…
philmerrell Sep 25, 2026
6bb20cd
fix(agents): delete an agent's icon objects when the agent is deleted
philmerrell Sep 25, 2026
000294d
fix(infra): sweep retention onto every AgentCore Runtime log group ge…
philmerrell Sep 25, 2026
95d001d
Merge pull request #1328 from Boise-State-Development/feature/memory-…
philmerrell Sep 25, 2026
3a9949f
docs(memory): production record census for the Phase 0 baseline
philmerrell Sep 25, 2026
efb8544
Merge pull request #1330 from Boise-State-Development/feature/side-ch…
philmerrell Sep 25, 2026
dbb023e
docs(compaction): record the Nova 2 Lite summary-model confirmation run
philmerrell Sep 25, 2026
13b48bc
Merge pull request #1331 from Boise-State-Development/fix/agent-delet…
philmerrell Sep 25, 2026
4621ae9
chore(infra): expire noncurrent versions in the RAG documents bucket
philmerrell Sep 25, 2026
ad19a1e
fix(compaction): attach post-turn cut events to the call that trigger…
philmerrell Sep 25, 2026
15dee7c
fix(costs): build the prefix split from native counts only
philmerrell Sep 25, 2026
9de8839
feat(observability): carry sessionId on compaction EMF records
philmerrell Sep 25, 2026
7525916
docs(compaction): record root causes of the 2026-09-25 telemetry gaps
philmerrell Sep 25, 2026
8a3a35e
Merge pull request #1332 from Boise-State-Development/fix/runtime-log…
philmerrell Sep 25, 2026
fb68ff8
Merge pull request #1333 from Boise-State-Development/docs/memory-bas…
philmerrell Sep 25, 2026
8f7fa1c
fix(memory): reconnect long-term memory retrieval on a dead pooled co…
philmerrell Sep 25, 2026
6b4a27a
Merge pull request #1334 from Boise-State-Development/feature/compact…
philmerrell Sep 25, 2026
4b86084
docs(compaction): fix stale topP note on the summary model default
philmerrell Sep 25, 2026
7388bca
feat(compaction): pin verbatim facts ahead of the compressed summary
philmerrell Sep 25, 2026
4307fa5
feat(infra): wire CDK_COMPACTION_SUMMARY_EXTRACT_ENABLED to the runtime
philmerrell Sep 25, 2026
dc48fd6
test(compaction-harness): screen extract-then-compress from productio…
philmerrell Sep 25, 2026
d28f90f
docs(compaction): extract-then-compress clears the quality veto
philmerrell Sep 25, 2026
444bea7
Merge pull request #1336 from Boise-State-Development/chore/rag-bucke…
philmerrell Sep 25, 2026
3c4949f
fix(scripts): forward the runtime log retention sweep kill switch as …
philmerrell Sep 25, 2026
ff84129
docs(kaizen): queue the runtime log retention follow-ups
philmerrell Sep 25, 2026
5cae9d2
fix(kb): don't ingest or revive a document deleted before its event l…
philmerrell Sep 25, 2026
177875f
Merge pull request #1337 from Boise-State-Development/fix/compaction-…
philmerrell Sep 25, 2026
3ca8bad
Merge pull request #1338 from Boise-State-Development/fix/memory-retr…
philmerrell Sep 25, 2026
29c3a5a
Merge pull request #1342 from Boise-State-Development/fix/kb-late-ing…
philmerrell Sep 25, 2026
d3b2aca
Merge pull request #1341 from Boise-State-Development/chore/kaizen-ru…
philmerrell Sep 25, 2026
f670854
feat(memory): scope-labelled project blocks, anchor stripping and a l…
philmerrell Sep 25, 2026
8b733ae
feat(agents): scope-addressed memory tools for the project harness
philmerrell Sep 25, 2026
db5e1c5
feat(inference-api): wire project memory into harness turns
philmerrell Sep 25, 2026
c86956a
docs(projects): record 2.4a dev validation and 2.4b as built
philmerrell Sep 25, 2026
7e2f5f1
Merge pull request #1339 from Boise-State-Development/fix/compaction-…
philmerrell Sep 25, 2026
ccf3173
perf(compaction): run extraction and narrative compression concurrently
philmerrell Sep 25, 2026
7f5d7ae
fix(compaction): keep each identifier's label in the extraction
philmerrell Sep 25, 2026
9fb5f6e
fix(infra): tolerate a missing runtime log group in RuntimeLogRetention
philmerrell Sep 25, 2026
fc22685
docs(kaizen): record #1345 against the runtime log retention race
philmerrell Sep 25, 2026
ddc7ee6
docs(compaction): record the concurrent extract-then-compress rescore
philmerrell Sep 25, 2026
31e8215
docs(kaizen): queue the RAG documents bucket lifecycle follow-up
philmerrell Sep 25, 2026
b207673
Merge pull request #1344 from Boise-State-Development/feature/harness…
philmerrell Sep 25, 2026
ad27401
Merge pull request #1346 from Boise-State-Development/docs/kaizen-rag…
philmerrell Sep 25, 2026
3b07bf4
fix(kb): refund managed-KB bytes on delete and settle migrated corpora
philmerrell Sep 25, 2026
1a8baea
Merge pull request #1345 from Boise-State-Development/fix/runtime-log…
philmerrell Sep 25, 2026
981f097
docs: note compaction extract-then-compress is on in development
philmerrell Sep 26, 2026
47e31cb
fix(kb): let the reconciler read the documents bucket; anchor storedB…
philmerrell Sep 26, 2026
3e619a7
Merge pull request #1347 from Boise-State-Development/fix/kb-byte-cap…
philmerrell Sep 26, 2026
7aa6793
fix(compaction): salvage a summary generation that hits its token cei…
philmerrell Sep 26, 2026
582cfd0
docs: note compaction extract-then-compress is on in production
philmerrell Sep 26, 2026
54a1db2
feat(memory): calibrate the relevance cut on a labelled eval set; def…
philmerrell Sep 26, 2026
840e26b
feat(memory): log per-namespace retrieval scores, no ids or text
philmerrell Sep 26, 2026
abb1dd9
docs(memory): link the score-logging PR
philmerrell Sep 26, 2026
ce88b87
Merge pull request #1335 from Boise-State-Development/feature/compact…
philmerrell Sep 26, 2026
3dc6908
docs(kaizen): track harness-sdk#4618 as a Strands pin-bump hazard
philmerrell Sep 26, 2026
ec2ac93
Merge pull request #1348 from Boise-State-Development/fix/kb-reconcil…
philmerrell Sep 26, 2026
966d1b8
docs(projects): record 2.4b dev validation
philmerrell Sep 26, 2026
6bc5287
docs(kaizen): record the posted #4618 comment in the watch entry
philmerrell Sep 26, 2026
c756e6f
fix(count-tokens): strip global., au. and jp. inference-profile prefixes
philmerrell Sep 25, 2026
428df3d
Merge pull request #1351 from Boise-State-Development/claude/kaizen-p…
philmerrell Sep 26, 2026
a746c6b
Merge pull request #1352 from Boise-State-Development/docs/projects-2…
philmerrell Sep 26, 2026
77b2386
docs(kaizen): queue the production managed-KB byte-counter repair for…
philmerrell Sep 26, 2026
c9d25e4
perf(context-attribution): take native token counts off the model-cal…
philmerrell Sep 26, 2026
65c3e10
Merge pull request #1349 from Boise-State-Development/feature/memory-…
philmerrell Sep 26, 2026
cdf5239
Merge pull request #1350 from Boise-State-Development/feature/memory-…
philmerrell Sep 26, 2026
1fb4a97
Merge develop into fix/compaction-summary-max-tokens-salvage
philmerrell Sep 26, 2026
9eba96d
Merge pull request #1353 from Boise-State-Development/fix/compaction-…
philmerrell Sep 26, 2026
b25fd1d
Merge pull request #1354 from Boise-State-Development/docs/kaizen-kb-…
philmerrell Sep 26, 2026
09937dd
Merge pull request #1343 from Boise-State-Development/feature/count-t…
philmerrell Sep 26, 2026
f4a1958
feat(compaction): turn extract-then-compress on by default
philmerrell Sep 26, 2026
a02435b
chore(infra): drop the CDK wiring for the extract-then-compress flag
philmerrell Sep 26, 2026
9d52b7d
docs(compaction): record the dev validation and the default-on flip
philmerrell Sep 26, 2026
0b2212c
test(compaction): pin the salvage test to the plain compression path
philmerrell Sep 26, 2026
d72c9dc
Merge pull request #1355 from Boise-State-Development/feature/compact…
philmerrell Sep 26, 2026
fd99500
docs(kaizen): queue the production check for #1343's native token counts
philmerrell Sep 26, 2026
78738ea
fix(agents): run every agent-stream step in one context
philmerrell Sep 26, 2026
02206a8
Merge pull request #1356 from Boise-State-Development/chore/queue-cou…
philmerrell Sep 26, 2026
8154ba1
Merge pull request #1357 from Boise-State-Development/feature/otel-co…
philmerrell Sep 26, 2026
f3c9079
feat(models): curate Claude Opus 5.5, GPT-6 Sol, GPT-6 Luna and GPT-5.5
philmerrell Sep 26, 2026
57c97e0
Merge remote-tracking branch 'origin/main' into backmerge/main-into-d…
philmerrell Sep 26, 2026
132dce1
Merge pull request #1360 from Boise-State-Development/backmerge/main-…
philmerrell Sep 26, 2026
480d3c9
fix(kb): stop imports committing bytes they never reserved
philmerrell Sep 26, 2026
5b6f2db
feat(kb): opt-in --settle-unexplained for byte counters no document e…
philmerrell Sep 26, 2026
5520d0a
fix(spa): forget the new-conversation draft on the first send
philmerrell Sep 26, 2026
3af7af9
Merge pull request #1362 from Boise-State-Development/fix/composer-dr…
philmerrell Sep 26, 2026
00511e7
Merge remote-tracking branch 'origin/main' into backmerge/main-into-d…
philmerrell Sep 26, 2026
a30e61b
Merge pull request #1364 from Boise-State-Development/backmerge/main-…
philmerrell Sep 26, 2026
def4441
fix(kb): re-ingest a synced source that changed on a managed knowledg…
philmerrell Sep 27, 2026
41dd447
fix(spa): don't mark a finished turn interrupted when Stop lands afte…
philmerrell Sep 27, 2026
7f1e8fd
fix(backend): treat any non-end_turn stop as a failed side-channel call
philmerrell Sep 27, 2026
2d8e87c
Merge pull request #1361 from Boise-State-Development/feature/kb-byte…
philmerrell Sep 27, 2026
2a5d983
Merge pull request #1366 from Boise-State-Development/fix/stop-after-…
philmerrell Sep 27, 2026
5c3d99d
fix(spa): keep the context-meter panel above the announcement pill
philmerrell Sep 27, 2026
a4e7e19
Merge pull request #1365 from Boise-State-Development/fix/kb-sync-man…
philmerrell Sep 27, 2026
5956eb2
fix(spa): don't attribute a page-hide to a turn that already finished
philmerrell Sep 27, 2026
fb30731
Merge pull request #1369 from Boise-State-Development/fix/context-met…
philmerrell Sep 27, 2026
d201402
Merge pull request #1368 from Boise-State-Development/fix/side-channe…
philmerrell Sep 27, 2026
693d364
docs(specs): background handoffs with in-place review and notifications
philmerrell Sep 27, 2026
e0923ba
Merge pull request #1370 from Boise-State-Development/fix/pagehide-sk…
philmerrell Sep 27, 2026
8b19ca9
perf(backend): push the first-turn session title as soon as it exists
philmerrell Sep 27, 2026
0a48f32
perf(spa): poll for a late session title instead of one 1.5s retry
philmerrell Sep 27, 2026
dbf5426
Merge pull request #1371 from Boise-State-Development/docs/agent-hand…
philmerrell Sep 27, 2026
5371dfc
fix: roll back KB sync change gates when the S3 stage fails
philmerrell Sep 27, 2026
6844990
Merge pull request #1358 from Boise-State-Development/feature/curate-…
philmerrell Sep 27, 2026
38ef4c8
Merge pull request #1373 from Boise-State-Development/fix/kb-sync-gat…
philmerrell Sep 27, 2026
ff2f316
Merge pull request #1374 from Boise-State-Development/feature/session…
philmerrell Sep 28, 2026
f015e86
perf: reuse one Bedrock client across side-channel calls
philmerrell Sep 28, 2026
f07f453
docs: plan the AgentCore Runtime V2 migration
philmerrell Sep 28, 2026
bb70ec7
Merge pull request #1375 from Boise-State-Development/feature/side-ch…
philmerrell Sep 28, 2026
f0a0ac5
perf(backend): A/B the first-turn agent build, default off
philmerrell Sep 28, 2026
047d715
Merge pull request #1376 from Boise-State-Development/claude/agentcor…
philmerrell Sep 28, 2026
8d0dff8
fix: brighten dark-mode section headers and bold markdown
philmerrell Sep 28, 2026
e464627
Merge pull request #1378 from Boise-State-Development/claude/font-col…
philmerrell Sep 28, 2026
f5ca1b0
fix(announcements): suppress global error toast for fail-open announc…
claude Sep 28, 2026
9ca21b0
Tighten mobile conversation gutters
claude Sep 28, 2026
cc3214e
fix(announcements): retry an ack once on a transient failure
claude Sep 28, 2026
d9f8e55
docs(configuration): add complete feature-flag reference
DerrickF Sep 28, 2026
13f6158
docs: map the turn path from send to first token and plan the TTFT work
philmerrell Sep 29, 2026
9d51d51
refactor(inference-api): extract the invocation route's turn phases
philmerrell Sep 29, 2026
c1aa840
Merge pull request #1382 from Boise-State-Development/claude/mobile-c…
philmerrell Sep 29, 2026
a1928cc
Merge pull request #1384 from Boise-State-Development/feat/feature-fl…
DerrickF Sep 29, 2026
92ce0f1
Merge remote-tracking branch 'origin/develop' into feature/agent-buil…
philmerrell Sep 30, 2026
d476da9
Merge pull request #1383 from Boise-State-Development/claude/mobile-a…
philmerrell Sep 30, 2026
8113f3f
refactor(backend): withdraw the off-loop agent-build arm and its MCP …
philmerrell Sep 30, 2026
628da6b
perf(backend): build the shared boto3 session at warm-up and hand it …
philmerrell Sep 30, 2026
5802a29
test(backend): cover the warm-up shared session and the arm's SDK seams
philmerrell Sep 30, 2026
5a07f17
ci: fan the backend pytest job over logical CPUs
philmerrell Sep 30, 2026
0a6d555
ci: run only the suites a pull request's paths can reach
philmerrell Sep 30, 2026
90e65c8
docs(kaizen): queue the backend suite sharding and fixture-scope foll…
philmerrell Sep 30, 2026
719a190
docs(turn-path): record that P2 landed in the narrowed PR #1377
philmerrell Sep 30, 2026
86373fa
Merge pull request #1377 from Boise-State-Development/feature/agent-b…
philmerrell Sep 30, 2026
acc053c
fix(model-dropdown): rotate the chevron when the menu opens
philmerrell Sep 30, 2026
f1ccd2b
perf(backend): ship the shared agent-build session default-on with a …
philmerrell Sep 30, 2026
dc46359
docs(specs): record the agent-build A/B readout and mark PR-6 shipped
philmerrell Sep 30, 2026
918f00a
feat(tool-rail): show full tool results in a scrollable box, labels a…
philmerrell Sep 30, 2026
0e06fb5
Merge pull request #1393 from Boise-State-Development/feature/model-d…
philmerrell Sep 30, 2026
d43654e
Merge pull request #1394 from Boise-State-Development/claude/tool-res…
philmerrell Sep 30, 2026
7501158
Merge pull request #1395 from Boise-State-Development/feature/agent-b…
philmerrell Sep 30, 2026
45d8239
Merge pull request #1392 from Boise-State-Development/claude/test-exe…
philmerrell Sep 30, 2026
127467f
Merge pull request #1388 from Boise-State-Development/claude/gracious…
philmerrell Sep 30, 2026
6bc2657
perf(observability): split agent_build.tools into timed sub-stages
philmerrell Oct 1, 2026
397ee78
Merge pull request #1396 from Boise-State-Development/feature/agent-b…
philmerrell Oct 1, 2026
c8d8f27
perf(observability): extend the turn clock to the first model output
philmerrell Oct 1, 2026
1229b51
Merge pull request #1397 from Boise-State-Development/feature/turn-fi…
philmerrell Oct 1, 2026
93d3b01
fix(observability): read firstTokenMs at the model mark, not at emit
philmerrell Oct 1, 2026
64e91b9
fix(costs): price Nova 2 Sonic voice sessions per modality
philmerrell Oct 1, 2026
37ba802
feat(voice): choose the Nova 2 Sonic voice and microphone from the co…
philmerrell Oct 1, 2026
5156978
perf(memory): overlap the long-term-memory lookup with the message wr…
philmerrell Oct 1, 2026
d02263a
Merge pull request #1398 from Boise-State-Development/fix/first-token…
philmerrell Oct 1, 2026
9648316
Merge pull request #1400 from Boise-State-Development/feature/ltm-pre…
philmerrell Oct 1, 2026
a4834b7
Merge pull request #1399 from Boise-State-Development/claude/bedrock-…
philmerrell Oct 2, 2026
a05553b
chore(kaizen): weekly research scan 2026-10-02
philmerrell Oct 2, 2026
fe6d9d5
docs(specs): record the P4a readout and measure the per-turn history …
philmerrell Oct 2, 2026
3da8500
Merge pull request #1402 from Boise-State-Development/docs/turn-path-…
philmerrell Oct 2, 2026
4568e50
Merge pull request #1401 from Boise-State-Development/kaizen/research…
philmerrell Oct 2, 2026
309d6a5
chore(deps): bump strands-agents 1.57.1 + bedrock-agentcore 1.23.1 + …
philmerrell Sep 27, 2026
c2bd111
fix: adapt voice, session manager and context-window lookup to strand…
philmerrell Sep 27, 2026
a6b32d7
perf(streaming): take the per-turn history count off the critical path
philmerrell Oct 2, 2026
fe75bee
chore(deps): bump strands-agents 1.57.2 + bedrock-agentcore 1.24.0
philmerrell Oct 2, 2026
61f1252
fix(voice): adapt to strands 1.57.2's graduated bidi API
philmerrell Oct 2, 2026
7a8028a
fix(memory): skip the long-term-memory prefetch for the voice BidiAgent
philmerrell Oct 2, 2026
a295b2c
Merge pull request #1403 from Boise-State-Development/feature/history…
philmerrell Oct 2, 2026
3d7369a
docs(specs): history-count fix dev readout + cold MCP load finding
philmerrell Oct 2, 2026
db16cc8
Merge pull request #1367 from Boise-State-Development/chore/strands-1…
philmerrell Oct 2, 2026
e288fb4
fix(nightly): resolve stack URLs from the single PlatformStack
philmerrell Oct 2, 2026
6236880
feat(testing): smoke and regression pass for the turn path
philmerrell Oct 2, 2026
ac29621
perf(mcp): pre-flight an agent's external MCP servers concurrently
philmerrell Oct 2, 2026
5c299d8
Merge pull request #1404 from Boise-State-Development/docs/history-co…
philmerrell Oct 2, 2026
a948879
Merge pull request #1406 from Boise-State-Development/feature/paralle…
philmerrell Oct 2, 2026
3fbb220
chore(kaizen): weekly review prep 2026-10-02
philmerrell Oct 2, 2026
f73eb34
feat(testing): hold the CSV row to the tools seeing the file; add --i…
philmerrell Oct 2, 2026
a6e0b8c
docs(specs): parallel MCP pre-flight dev readout
philmerrell Oct 2, 2026
25c5853
fix(attachments): persist inline spreadsheets and decks as session files
philmerrell Oct 2, 2026
347c128
fix(voice): persist voice transcripts filled in by MessageUpdatedEvent
philmerrell Oct 2, 2026
756a471
Merge pull request #1408 from Boise-State-Development/docs/parallel-m…
philmerrell Oct 2, 2026
1e9a86a
Merge pull request #1409 from Boise-State-Development/feature/persist…
philmerrell Oct 2, 2026
1c8573d
Merge pull request #1410 from Boise-State-Development/fix/voice-trans…
philmerrell Oct 2, 2026
b1619d7
perf(rag): start an agent turn's knowledge-base search before the build
philmerrell Oct 2, 2026
635a527
Merge pull request #1405 from Boise-State-Development/feature/smoke-r…
philmerrell Oct 2, 2026
4fe1e9f
Merge pull request #1411 from Boise-State-Development/feature/kb-sear…
philmerrell Oct 2, 2026
58906bf
fix(testing): make smoke_turns' production guard an exact-host check
philmerrell Oct 2, 2026
78d3568
ci(nightly): run the turn-path smoke matrix after the Playwright E2E …
philmerrell Oct 2, 2026
93c4953
Merge pull request #1407 from Boise-State-Development/kaizen/review-2…
philmerrell Oct 2, 2026
3853dde
perf(agents): make the binding history check an existence check
philmerrell Oct 2, 2026
2485847
Merge pull request #1412 from Boise-State-Development/feature/nightly…
philmerrell Oct 2, 2026
6de0d02
ci(nightly): grant the E2E user the tools the turn smoke needs
philmerrell Oct 2, 2026
3184f11
Merge pull request #1413 from Boise-State-Development/fix/session-has…
philmerrell Oct 2, 2026
1a5848a
Merge pull request #1414 from Boise-State-Development/feature/nightly…
philmerrell Oct 2, 2026
fc08b5d
perf(rag): keep the KB search's follow-up reads off the event loop
philmerrell Oct 2, 2026
f74a051
Merge pull request #1415 from Boise-State-Development/perf/kb-post-se…
philmerrell Oct 2, 2026
e048ba6
perf(kb): read the KB record once per search, on a cached table
philmerrell Oct 3, 2026
1020bd8
Merge develop: combine the single record read with the off-loop searc…
philmerrell Oct 3, 2026
dfe857b
chore(kaizen): log the four decisions carried since the 09-25 review
philmerrell Oct 3, 2026
35a93f2
Merge pull request #1417 from Boise-State-Development/kaizen/log-deci…
philmerrell Oct 3, 2026
ac4212a
Merge pull request #1416 from Boise-State-Development/perf/kb-search-…
philmerrell Oct 3, 2026
b5990c2
docs(specs): record the KB single-read readout on dev (#1416)
philmerrell Oct 3, 2026
730bbe0
Merge pull request #1418 from Boise-State-Development/docs/kb-single-…
philmerrell Oct 3, 2026
b3fb936
docs(specs): conversation rewind and fork
philmerrell Oct 3, 2026
96fd1b2
docs(flags): feature switches stay, rollout switches retire
philmerrell Oct 3, 2026
301a860
Merge pull request #1420 from Boise-State-Development/docs/kill-switc…
philmerrell Oct 3, 2026
89fdb6c
docs(specs): link rewind/fork spec to its tracking issue
philmerrell Oct 3, 2026
fca8541
Merge pull request #1419 from Boise-State-Development/feature/convers…
philmerrell Oct 3, 2026
9296b70
Release/1.26.0
philmerrell Oct 3, 2026
f0e37c0
fix(voice): don't log the client-supplied sample rate (#1425)
philmerrell Oct 3, 2026
0db06be
Merge remote-tracking branch 'origin/develop' into release/1.26.0
philmerrell Oct 3, 2026
5df0a64
docs(release): note the voice log-injection fix in 1.26.0
philmerrell Oct 3, 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
88 changes: 88 additions & 0 deletions .claude/skills/smoke-regression/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
---
name: smoke-regression
description: >-
Run the smoke and regression pass for this stack after a change: the hermetic
suites, the turn-matrix script that drives real agent turns and asserts every
SSE code path (frame order, interrupt/resume, 409, Stop, preview, restore,
cache stability), and the in-app-browser checklist for rendered surfaces.
Use when the user says "smoke test", "regression test", "run the smoke pass",
"verify this on dev", "test all the response paths", "did we break
streaming", or before a release. Points at docs/testing/smoke-regression.md
as the single source of truth for rows, fixtures and failure reading.
---

# Smoke / regression pass

The matrix, its fixtures and how to read a failure live in
[docs/testing/smoke-regression.md](../../../docs/testing/smoke-regression.md).
Read §2.2 before running L1 and §3 before L2. This skill is the procedure.

## 0. Decide the layers

From the diff, pick per §4 of the doc:

- **L0** always, for the packages touched.
- **L1** when the change touches `inference_api/chat/*`, `agents/main_agent/**`,
`apis/shared/harness/**`, the SSE table, or any interrupt flow.
- **L2** when the change touches a rendered surface (composer, loader, tool
rail, pickers, banners) or an interrupt flow.

Say which layers you are running and why in one line before starting.

## 1. L0 — hermetic

From the branch's checkout. In a worktree `PYTHONPATH` is mandatory or you test
`develop`:

```bash
cd <checkout>/backend && PYTHONPATH=$PWD/src AWS_EC2_METADATA_DISABLED=true <main checkout>/backend/.venv/bin/python -m pytest tests/ -q
```

Frontend `cd frontend/ai.client && npx ng test --watch=false`; infra
`cd infrastructure && npx tsc --noEmit && npx jest`. Never pass dummy AWS
credentials to make a stall go away (see the doc §1).

## 2. L1 — turn matrix

Pick the target in this order and state which one you used:

1. **Deployed dev through the Runtime** (always available to an agent with the
`dev-ai` profile and an active headless grant):
```bash
cd backend && AWS_PROFILE=dev-ai uv run python scripts/smoke_turns.py --auth headless-grant --user-id <sub> --prefix dev-boisestateai-v2 --json /tmp/smoke.json
```
The grant's owner id is in `dev-boisestateai-v2-bff-sessions` under
`PK=HEADLESS-GRANT#…` (`grant_user_id`). If the script reports no active
grant, the user must sign in and run a headless run once; do not try to
mint tokens another way (the doc explains why the other routes are dead ends).
This mode skips the app-api-only rows (409, Stop, steer). It deletes the
sessions it created; after a crash or `--keep`, pass `--delete-sessions id,id`.
2. **Local stack** when the branch is not deployed yet and you need the
app-api rows: app-api on :8000 with `SKIP_AUTH=true`, inference-api on
:8001, then `--base-url http://127.0.0.1:8000`. Do not flip `SKIP_AUTH` in
the user's `backend/src/.env` without asking; use a worktree copy.
3. **Deployed through app-api** with a Cognito password user
(`--auth cognito`), when one exists for the environment.

Add `--with-attachments` when attachments are in scope, and the fixture flags
(`--approval-tool`, `--skill-id`, `--agent-id`) when those rows matter. Never
pass `--allow-prod`.

Paste the report table into your summary. Treat SKIP as "not covered here",
OBSERVED as information, WARN as a model-quality note. A FAIL is a finding:
quote its detail, check the three traps in the doc §2.2 before calling it a
bug, then fix or report.

## 3. L2 — in-app browser

Use the built-in browser pane on `https://dev.boisestate.ai`; it carries the
user's session. Install the frame-capture snippet from the doc §3 with
`javascript_tool` first, then work through the checklist rows that apply.
Verify with `read_page` and `window.__frames`, not screenshots, except for a
final visual proof. Mirror the CSRF cookie into `X-CSRF-Token` for any manual
non-GET call. Delete the smoke conversations when done.

## 4. Report

One table per layer run, a one-line verdict, and the exact commands used so
the run is reproducible. If a layer was skipped, say which and why.
77 changes: 68 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,22 @@ name: CI
# Pre-merge test gate. The deploy workflows (backend.yml, platform.yml,
# frontend-deploy.yml) only run on push to develop/main — they run the
# test jobs as a gate *before deploying*, so unit tests never ran on the
# PR itself. This workflow runs the full test suites on every pull request
# into develop/main, with no deploy/build/AWS steps, so regressions are
# caught before merge. Deploys remain push-only.
# PR itself. This workflow runs the test suites on every pull request into
# develop/main, with no deploy/build/AWS steps, so regressions are caught
# before merge. Deploys remain push-only.
#
# Which suites run is decided per PR by the `changes` job from the PR's file
# list (scripts/ci/classify-changes.sh): a docs-only PR runs nothing, a
# frontend-only PR runs the two SPA jobs, an infrastructure PR runs jest plus
# the backend suites that read the CDK tree. The mapping is fail-open — an
# unrecognised path, a workflow_dispatch, or a failed file-list call runs
# everything — and is pinned by backend/tests/supply_chain/test_ci_path_filter.py.
#
# The filtering lives on the JOBS, not on the trigger's `paths:`. A workflow
# that does not trigger leaves a required status check "Expected" forever
# and blocks the merge; a job that is skipped reports as skipped and does
# not. develop has no required checks today, but this shape survives adding
# them.
on:
workflow_dispatch:
pull_request:
Expand All @@ -23,25 +36,71 @@ concurrency:
cancel-in-progress: true

jobs:
# Classify the PR's changed files into the suites that can observe them.
# The file list comes from the REST API rather than a checkout diff: no
# fetch-depth games, no third-party action, and it is exact for renames
# (both names are fed through). Any failure to obtain the list yields an
# empty stdin, which the classifier treats as "run everything".
changes:
name: Classify changed paths
runs-on: ubuntu-24.04
permissions:
contents: read
pull-requests: read
outputs:
backend: ${{ steps.classify.outputs.backend }}
backend_contracts: ${{ steps.classify.outputs.backend_contracts }}
frontend: ${{ steps.classify.outputs.frontend }}
infra: ${{ steps.classify.outputs.infra }}
load: ${{ steps.classify.outputs.load }}
scripts: ${{ steps.classify.outputs.scripts }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
sparse-checkout: scripts/ci
- name: Classify
id: classify
env:
GH_TOKEN: ${{ github.token }}
EVENT_NAME: ${{ github.event_name }}
REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
files=""
if [ "$EVENT_NAME" = "pull_request" ]; then
files=$(gh api "repos/$REPO/pulls/$PR_NUMBER/files" --paginate \
--jq '.[] | .filename, (.previous_filename // empty)') || files=""
echo "$(printf '%s\n' "$files" | grep -c .) changed path(s) on PR #$PR_NUMBER"
else
echo "$EVENT_NAME is not a pull request: running every suite"
fi
printf '%s\n' "$files" | bash scripts/ci/classify-changes.sh | tee -a "$GITHUB_OUTPUT"

tests:
name: Tests
needs: changes
permissions:
contents: read
uses: ./.github/workflows/tests.yml
with:
run_backend: true
run_frontend: true
run_backend: ${{ needs.changes.outputs.backend == 'true' }}
# The supply-chain/architecture subset, for PRs that touch what those
# tests read (CDK, scripts, workflows) without touching backend/. A
# no-op inside tests.yml when run_backend is also true.
run_backend_contracts: ${{ needs.changes.outputs.backend_contracts == 'true' }}
run_frontend: ${{ needs.changes.outputs.frontend == 'true' }}
# The frontend suite again under --coverage — the nightly's invocation.
# Coverage changes how the specs are built (see tests.yml), so specs can
# pass here and fail there. Only the PR gate pays for it; the deploy
# workflows keep running the plain suite.
run_frontend_coverage: true
run_infra: true
run_frontend_coverage: ${{ needs.changes.outputs.frontend == 'true' }}
run_infra: ${{ needs.changes.outputs.infra == 'true' }}
# Pure-logic tests for tests/load. Deliberately only on the PR gate: the
# deploy workflows run test suites to protect a deploy, and the load
# suite has no bearing on one.
run_load_unit: true
run_load_unit: ${{ needs.changes.outputs.load == 'true' }}
# Offline unit tests for scripts/restore-data. PR gate only, like the
# load suite: a deploy gains nothing from them.
run_scripts: true
run_scripts: ${{ needs.changes.outputs.scripts == 'true' }}

39 changes: 38 additions & 1 deletion .github/workflows/nightly-deploy-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
# 3. deploy-*-code — API-driven code deploys (ECS / AgentCore Runtime
# / Lambda) onto the freshly-deployed stack.
# 4. deploy-frontend — build SPA + S3 sync + CloudFront invalidation.
# 5. smoke-test / e2e-tests — validate the deployment.
# 5. smoke-test / e2e-tests — validate the deployment (e2e-tests also runs
# the turn-path smoke matrix, scripts/nightly/turn-smoke.sh, non-blocking).
# 6. teardown — delete the ephemeral stack + buckets/secrets/logs.
#
# Ephemeral deploys run with NO custom domain (CDK_DOMAIN_NAME=""); the SPA,
Expand Down Expand Up @@ -504,6 +505,17 @@ jobs:
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# uv is needed before the E2E run: e2e-test.sh seeds the E2E users and
# (via backend/scripts/seed_e2e_role.py) the e2e_user RBAC role, and the
# turn smoke below reuses the same environment.
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: '0.7.12'
enable-cache: true
cache-dependency-glob: 'backend/uv.lock'
- name: Sync backend deps
working-directory: backend
run: uv sync --extra agentcore --frozen
- name: Run E2E tests
run: bash scripts/nightly/e2e-test.sh
- name: Upload Playwright report
Expand All @@ -513,6 +525,31 @@ jobs:
name: playwright-report-${{ inputs.label }}
path: frontend/ai.client/playwright-report/
retention-days: 30
# ── Turn-path smoke matrix (docs/testing/smoke-regression.md §2) ──
# Real agent turns through the stack's app-api as the E2E user, asserting
# the SSE contract, interrupt/resume, 409, Stop, preview, attachments,
# restore and cache-hash stability. Runs after the Playwright step because
# e2e-test.sh has by then patched CORS and the Cognito callback list for
# the CloudFront URL, which the scripted Hosted UI login depends on.
# Non-blocking (continue-on-error) until it has a green track record on
# the nightly stack; promote by removing that line. The E2E user's
# `calculator` / `ask_user_question` grants come from the e2e_user role
# that e2e-test.sh seeds; a row that cannot run reports SKIP, never FAIL.
- name: Run turn smoke matrix
id: turn-smoke
if: always()
continue-on-error: true
env:
TURN_SMOKE_REPORT: ${{ github.workspace }}/turn-smoke-report.json
run: bash scripts/nightly/turn-smoke.sh
- name: Upload turn smoke report
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: turn-smoke-report-${{ inputs.label }}
path: turn-smoke-report.json
retention-days: 30
if-no-files-found: ignore

# ── Auto-teardown ──────────────────────────────────────────────────────────
# ALWAYS runs (unless skip-teardown), even if any deploy/test job above failed
Expand Down
48 changes: 44 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ on:
required: false
default: false
type: boolean
run_backend_contracts:
description: 'Run only the backend suites that read the CDK tree, scripts and workflows (supply_chain, architecture); a no-op when run_backend is also set'
required: false
default: false
type: boolean
run_frontend:
description: 'Run frontend test suite'
required: false
Expand Down Expand Up @@ -67,10 +72,13 @@ jobs:
run: uv sync --extra agentcore --extra dev
- name: Run pytest
working-directory: backend
# `-n auto` fans the suite across all runner cores (pytest-xdist).
# Verbosity/--tb live in backend/pytest.ini. The nightly coverage run
# (scripts/backend/test.sh) is deliberately left serial.
run: uv run pytest tests/ -n auto
# `-n logical` fans the suite across every vCPU (pytest-xdist). Not
# `auto`: with psutil installed, `auto` counts PHYSICAL cores, and the
# 4-vCPU runner reports 2, so it started 2 workers for ~11k tests
# (`created: 2/2 workers` in the log). Verbosity/--tb live in
# backend/pytest.ini. The nightly coverage run (scripts/backend/test.sh)
# is deliberately left serial.
run: uv run pytest tests/ -n logical
# The repo-ROOT supply-chain suite (not backend/tests/supply_chain):
# cross-package contracts that read CDK, the backup/restore scripts and
# the python env-var readers side by side, so it lives above backend/.
Expand All @@ -81,6 +89,38 @@ jobs:
- name: Run root supply-chain pytest
run: uv run --project backend --no-sync pytest tests/supply_chain/ -v

# The subset of the backend suite that reads OUTSIDE backend/: the
# supply-chain and architecture tests assert against the CDK tree, the
# scripts and the workflows side by side with the Python that consumes
# them, so an infrastructure-only PR still needs them — and nothing else in
# backend/tests/. About a hundred tests, well under a minute, against seven
# minutes for the full suite. Skipped whenever run_backend is set, because
# the full run already covers it.
test-backend-contracts:
if: ${{ inputs.run_backend_contracts && !inputs.run_backend }}
name: Test backend contracts (pytest)
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.ref }}
persist-credentials: false
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: '0.7.12'
enable-cache: true
cache-dependency-glob: 'backend/uv.lock'
- name: Sync deps
working-directory: backend
run: uv sync --extra agentcore --extra dev
- name: Run backend contract suites
working-directory: backend
run: uv run pytest tests/supply_chain/ tests/architecture/ -v
- name: Run root supply-chain pytest
run: uv run --project backend --no-sync pytest tests/supply_chain/ -v

test-frontend:
if: ${{ inputs.run_frontend }}
name: Test frontend
Expand Down
Loading
Loading