toga-ai 1.0.1065 → 1.0.1067
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/knowledge/2.0/apps/_underscore/features/customer-locations-files-notes.md +4 -0
- package/knowledge/2.0/apps/toga25-blox/INDEX.md +1 -0
- package/knowledge/2.0/apps/toga25-blox/workflows/github-actions-aws-oidc-role.md +47 -0
- package/knowledge/2.0/standards/secrets-and-build-credentials.md +2 -1
- package/knowledge/INDEX.md +1 -1
- package/package.json +1 -1
- package/skills/finish/SKILL.md +10 -1
|
@@ -15,6 +15,7 @@ files:
|
|
|
15
15
|
- _underscore/Model/Client/CustomerNote.php
|
|
16
16
|
- dbchanges2/Core/2026-10-17b - CustomerLocationsFilesNotesActivity.sql
|
|
17
17
|
- dbchanges2/Client/2026-10-17b - CustomerLocationsFilesNotes.sql
|
|
18
|
+
- dbchanges2/Core/2026-10-17d - CustomerNotesRecordFieldNames.sql
|
|
18
19
|
related:
|
|
19
20
|
- ./record-hard-delete.md
|
|
20
21
|
- ./record-activity-timeline.md
|
|
@@ -66,6 +67,9 @@ RecordFields 2801-2814 cover the three new records.
|
|
|
66
67
|
- **`_contactCount` must stay non-stored** — a stored self-aggregate deadlocks the save cascade
|
|
67
68
|
([details](./model-save-parent-cascade-stored-field-deadlock.md)).
|
|
68
69
|
- **Assets link to a customer through Contacts** (`Units.contactId → Contacts.customerId`), not directly.
|
|
70
|
+
- **Copied RecordFields need `name`.** `CaseNotes` RecordFields 2743-2749 have NULL `name` (not fixed), so the
|
|
71
|
+
copy 2809-2814 came out NULL too; filled by `Core/2026-10-17d`. Set `name` on every new RecordField.
|
|
69
72
|
|
|
70
73
|
## Change history
|
|
74
|
+
- 2026-10-17 — Filled NULL `name` on RecordFields 2809-2814 (Core/2026-10-17d). (jcardinal)
|
|
71
75
|
- 2026-10-17 — Created: primaryLocationId, _contactCount, Locations_Customers, Customers_Files, CustomerNotes (TRUE-82870). (jcardinal)
|
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
|-----|---------|
|
|
5
5
|
| [TOGa Blox 2.5 — Architecture](architecture.md) | Shared React+TS SOURCE library for the new platform apps (new platform apps first; replaces toga-blox for all apps over time); read the ADR for full detail, not |
|
|
6
6
|
| [Old blox (toga-blox) straight port inside toga25-blox](features/old-blox-port.md) | Old `@agilant/toga-blox` code copied unchanged into toga25-blox (blox-v1 layer); open before touching any old component, its checks/config, or merging Storybook |
|
|
7
|
+
| [GitHub Actions → AWS role via OIDC (trust policy + sub claim)](workflows/github-actions-aws-oidc-role.md) | How a GitHub Actions job assumes an AWS IAM role with OIDC, and the `sub` claim trap; open before creating or debugging any GitHub-to-AWS role ("Not authorized |
|
|
7
8
|
| [Moving an old app from @agilant/toga-blox onto toga25-blox](workflows/moving-an-old-app-onto-toga25-blox.md) | Planned steps to switch an old app off the `@agilant/toga-blox` npm package onto toga25-blox source with zero import edits; open before moving any old app. |
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: GitHub Actions → AWS role via OIDC (trust policy + sub claim)
|
|
3
|
+
framework: "2.0"
|
|
4
|
+
repo: toga25-blox
|
|
5
|
+
project: TOGa Blox 2.5
|
|
6
|
+
client: shared
|
|
7
|
+
type: workflow
|
|
8
|
+
status: active
|
|
9
|
+
updated: 2026-10-17
|
|
10
|
+
owners: [jcardinal]
|
|
11
|
+
files:
|
|
12
|
+
- toga25-blox/.github/workflows/apps-build.yml
|
|
13
|
+
- toga25-blox/docs/ci-and-deploy.md
|
|
14
|
+
related:
|
|
15
|
+
- ../architecture.md
|
|
16
|
+
- ../../../standards/secrets-and-build-credentials.md
|
|
17
|
+
---
|
|
18
|
+
How a GitHub Actions job assumes an AWS IAM role with OIDC, and the `sub` claim trap; open before creating or debugging any GitHub-to-AWS role ("Not authorized to perform sts:AssumeRoleWithWebIdentity").
|
|
19
|
+
|
|
20
|
+
## Summary
|
|
21
|
+
|
|
22
|
+
Today's only user: toga25-blox `apps-build.yml` job `app-deps` → role
|
|
23
|
+
`arn:aws:iam::975050298201:role/github-actions-toga25-blox` (non-prod) → reads Secrets Manager `build/*` in
|
|
24
|
+
prod `654654170868` (secret layout: [secrets standard](../../../standards/secrets-and-build-credentials.md)).
|
|
25
|
+
|
|
26
|
+
## Steps (new role or new repo)
|
|
27
|
+
|
|
28
|
+
1. Check the repo's OIDC subject format first:
|
|
29
|
+
`gh api repos/<owner>/<repo>/actions/oidc/customization/sub`.
|
|
30
|
+
- `use_immutable_subject: true` → token `sub` = `repo:<owner>@<ownerId>/<repo>@<repoId>:<context>`
|
|
31
|
+
(toga25-blox: `repo:agilantsolutions@44615971/toga25-blox@1388231315:<context>`).
|
|
32
|
+
- otherwise → `repo:<owner>/<repo>:<context>`.
|
|
33
|
+
2. In the role trust policy (provider `token.actions.githubusercontent.com`), set `aud` =
|
|
34
|
+
`sts.amazonaws.com` and `StringLike` `token.actions.githubusercontent.com:sub` to a **list holding both
|
|
35
|
+
forms** (immutable + name), each ending `:*` or the exact context.
|
|
36
|
+
3. Workflow needs `permissions: id-token: write` and `aws-actions/configure-aws-credentials` with the role ARN.
|
|
37
|
+
4. Prove it with a real run — the job log shows the assumed role, not just a green YAML lint.
|
|
38
|
+
|
|
39
|
+
## Gotchas
|
|
40
|
+
|
|
41
|
+
- **Name-only `sub` in the trust policy fails silently forever** on a repo with immutable subjects. The
|
|
42
|
+
`app-deps` job failed on every run from 2026-09-28 (when added) until 2026-10-17 for this reason.
|
|
43
|
+
- `toga25-blox/docs/ci-and-deploy.md` setup steps 33-37 still show only the name form — fix them when next
|
|
44
|
+
in that repo.
|
|
45
|
+
|
|
46
|
+
## Change history
|
|
47
|
+
- 2026-10-17 — Created: root cause of `app-deps` never passing (immutable OIDC subject); trust now lists both forms (TRUE-82870). (jcardinal)
|
|
@@ -12,6 +12,7 @@ related:
|
|
|
12
12
|
- ../apps/_underscore/features/cloud-secrets-manager.md
|
|
13
13
|
- ../apps/api2/architecture.md
|
|
14
14
|
- ../apps/toga25-blox/architecture.md
|
|
15
|
+
- ../apps/toga25-blox/workflows/github-actions-aws-oidc-role.md
|
|
15
16
|
---
|
|
16
17
|
|
|
17
18
|
Every secret a machine (build, CI, app) reads lives in one place, AWS Secrets Manager in the production account; open before adding, reading, or rotating any credential.
|
|
@@ -44,7 +45,7 @@ Secret is encrypted with KMS key `alias/toga-secrets` (key policy lets non-prod
|
|
|
44
45
|
### Build readers today (non-prod `975050298201`)
|
|
45
46
|
|
|
46
47
|
- `amplify-platform-build` — Amplify service role; inline policy `platform-build-secrets-read` grants `secretsmanager:GetSecretValue` on prod `secret:build/*` + `kms:Decrypt` on `toga-secrets` via Secrets Manager. Attached to Amplify app `toga25-desk` (`d311sdoq12ddne`).
|
|
47
|
-
- `github-actions-toga25-blox` — GitHub OIDC provider (`token.actions.githubusercontent.com`), scoped to repo `agilantsolutions/toga25-blox`
|
|
48
|
+
- `github-actions-toga25-blox` — GitHub OIDC provider (`token.actions.githubusercontent.com`), scoped to repo `toga25-blox` only (trust `sub` lists both the immutable `agilantsolutions@44615971/toga25-blox@1388231315` form and the name form — see [GitHub Actions → AWS OIDC role](../apps/toga25-blox/workflows/github-actions-aws-oidc-role.md)), same policy shape. Used by `.github/workflows/apps-build.yml`.
|
|
48
49
|
- **Open item:** production Amplify builds need their own `amplify-platform-build` role in the **prod** account (same-account read — no cross-account sharing needed there).
|
|
49
50
|
|
|
50
51
|
## Adding a secret / a reader
|
package/knowledge/INDEX.md
CHANGED
|
@@ -34,7 +34,7 @@ _Auto-generated by `knowledge.js index`. Do not hand-edit._
|
|
|
34
34
|
- **toga25-supply** (TOGa 2.5 Supply) — 26 doc(s) → [2.0/apps/toga25-supply/INDEX.md](2.0/apps/toga25-supply/INDEX.md)
|
|
35
35
|
- **toga25-iq** (TOGa IQ) — 1 doc(s) → [2.0/apps/toga25-iq/INDEX.md](2.0/apps/toga25-iq/INDEX.md)
|
|
36
36
|
- **toga25-desk** (TOGa Desk 2.5) — 1 doc(s) → [2.0/apps/toga25-desk/INDEX.md](2.0/apps/toga25-desk/INDEX.md)
|
|
37
|
-
- **toga25-blox** (TOGa Blox 2.5) —
|
|
37
|
+
- **toga25-blox** (TOGa Blox 2.5) — 4 doc(s) → [2.0/apps/toga25-blox/INDEX.md](2.0/apps/toga25-blox/INDEX.md)
|
|
38
38
|
- **toga-blox** (TOGa Blox) — 15 doc(s) → [2.0/apps/toga-blox/INDEX.md](2.0/apps/toga-blox/INDEX.md)
|
|
39
39
|
|
|
40
40
|
## standalone framework
|
package/package.json
CHANGED
package/skills/finish/SKILL.md
CHANGED
|
@@ -577,7 +577,16 @@ developer the list name and leave the status alone.
|
|
|
577
577
|
|
|
578
578
|
## Step 17 — Report
|
|
579
579
|
|
|
580
|
-
Short list
|
|
580
|
+
Short list. **Start the report with the ticket line — REQUIRED, always first** (team rule,
|
|
581
|
+
2026-10-17), so the developer can get back to the ticket:
|
|
582
|
+
|
|
583
|
+
```
|
|
584
|
+
**Ticket:** TRUE-82870 — https://app.clickup.com/t/8577082/TRUE-82870
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
Link = `https://app.clickup.com/t/<CLICKUP_WORKSPACE_ID>/<TICKET>` with the ticket's custom id
|
|
588
|
+
(`CLICKUP_WORKSPACE_ID` = `8577082`, the TOGA ClickUp workspace). Add the ticket title after
|
|
589
|
+
the link when known.
|
|
581
590
|
|
|
582
591
|
1. KB: publish status (Step 5).
|
|
583
592
|
2. **Central ids — REQUIRED, always present, never skipped** (team rule, 2026-10-17). Its own
|