Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
305 commits
Select commit Hold shift + click to select a range
af8af36
feat(85-01): co-fate impersonation session writes with audit rows
szTheory Apr 25, 2026
b1c2cd8
docs(85-02): close the audit atomicity planning trail
szTheory Apr 25, 2026
b42d02a
docs(85-02): add the phase 85 verification gate
szTheory Apr 25, 2026
aa8ecb1
docs(85): finalize the phase 85 execution artifacts
szTheory Apr 25, 2026
82213bc
docs(phase-84): backfill routing honesty planning trail
szTheory Apr 26, 2026
04c2ee7
docs(milestone): record v1.19 audit (tech_debt) and flip phase 82 to …
szTheory Apr 26, 2026
6832d98
chore(release): sync CHANGELOG ### Summary into GitHub release body
szTheory Apr 26, 2026
8b593e0
docs(86): capture phase 86 context — reshape GAUAT email QA to 0-huma…
szTheory Apr 26, 2026
89ff1f8
docs(state): record phase 86 context session
szTheory Apr 26, 2026
7f9fc42
docs(86): research phase domain
szTheory Apr 26, 2026
14c9e80
docs(phase-86): commit phase 86 plans + balanced profile config baseline
szTheory Apr 26, 2026
cff1bf5
test(86-01): add failing contrast ratio tests for Sigra.A11y.Contrast
szTheory Apr 26, 2026
84f5057
feat(86-01): add Sigra.A11y.Contrast and Example.EmailAssertions
szTheory Apr 26, 2026
68cf988
test(86-01): add failing CSS lint tests for Sigra.Email.CssLint
szTheory Apr 26, 2026
d75b75a
feat(86-01): add CssLint, caniemail allowlist, and bump CTA to #1d4ed8
szTheory Apr 26, 2026
6e860ec
feat(86-01): extend Phase 04 and 08 email tests to close G1-G9
szTheory Apr 26, 2026
beafb86
docs(86-01): complete plan 01 summary — ExUnit harness and accessibil…
szTheory Apr 26, 2026
974f2b7
chore: merge executor worktree (worktree-agent-a9af4ff8bcdc9f1d1) — 8…
szTheory Apr 26, 2026
9023b75
fix(86-01): align install fixtures with CTA color bump
szTheory Apr 26, 2026
0e8e59c
docs(phase-86): update tracking after wave 1 (86-01 complete)
szTheory Apr 26, 2026
26687d8
docs(phase-86): mark 86-01 complete in roadmap checklist
szTheory Apr 26, 2026
9518c80
feat(86-02): deterministic email snapshot and UAT report mix tasks
szTheory Apr 26, 2026
b52ab55
feat(86-02): add Playwright email visual lane — 36 committed baselines
szTheory Apr 26, 2026
d26273d
docs(86-02): complete plan 86-02 — email snapshot harness and visual …
szTheory Apr 26, 2026
4255bf8
chore: merge executor worktree (worktree-agent-a2b2df7f7452242f0) — 8…
szTheory Apr 26, 2026
6ce3cd3
docs(phase-86): update tracking after wave 2 (86-02 complete)
szTheory Apr 26, 2026
dbb16eb
feat(86-04): materialize Phase 08 lifecycle email evidence bundle
szTheory Apr 26, 2026
f4ae827
docs(86-04): complete Phase 08 lifecycle email evidence plan summary
szTheory Apr 26, 2026
afaa905
feat(86-03): wire email_visual_regression CI lane, INDEX, VERIFICATIO…
szTheory Apr 26, 2026
c700a97
feat(86-03): materialize Phase 04 evidence bundle with 8 SHA-suffixed…
szTheory Apr 26, 2026
d07ca2e
docs(86-03): complete plan 86-03 — CI wiring, Phase 04 evidence bundl…
szTheory Apr 26, 2026
6425f06
chore: merge executor worktree (worktree-agent-a1007adcd5c6cc09a) — 8…
szTheory Apr 26, 2026
d956bec
fix(86-03,86-04): drop duplicate build_byte_budget_csv added by paral…
szTheory Apr 26, 2026
19dfe41
chore: merge executor worktree (worktree-agent-af7f53afdd14e7315) — 8…
szTheory Apr 26, 2026
029d8e4
docs(phase-86): update tracking after wave 3 (86-03 + 86-04 complete)
szTheory Apr 26, 2026
eaf0fd8
docs(86): add code review report (4 critical, 6 warnings, 2 info)
szTheory Apr 26, 2026
63fc683
docs(86): verifier appends status frontmatter + goal-backward analysis
szTheory Apr 26, 2026
053e39d
fix(86): make uat.report --check exit 2 on missing baselines (CR-01, …
szTheory Apr 26, 2026
170003a
fix(86): generalize email-visual release upload to any v* tag (CR-03)
szTheory Apr 26, 2026
cc80fac
fix(86): regenerate Phase 08 evidence with full D-86-06 frontmatter (…
szTheory Apr 26, 2026
2fffcb0
docs(phase-86): complete phase execution
szTheory Apr 26, 2026
e539959
docs(phase-86): mark GAUAT-02 satisfied (Phase 08 28-baseline harness…
szTheory Apr 26, 2026
6aa25cc
docs(phase-86): evolve PROJECT.md after phase 86 completion
szTheory Apr 26, 2026
5578523
docs(87): capture phase context + reshape GAUAT-03..06 to 0 human UAT
szTheory Apr 26, 2026
769dc06
docs(state): record phase 87 context session
szTheory Apr 26, 2026
a31458c
docs(phase-87): add validation strategy
szTheory Apr 26, 2026
9d66f67
docs(87): create phase plans (87-01a wave-1, 87-01b wave-2 deps 01a, …
szTheory Apr 27, 2026
6f61ed7
feat(87-01a): scaffold oauth issuer test seam
szTheory Apr 28, 2026
34d91c5
feat(87-01a): complete oauth issuer green cycle
szTheory Apr 28, 2026
fd03ffb
docs(87-01a): complete oauth issuer plan
szTheory Apr 28, 2026
481de08
feat(87-01b): add oauth smoketest task
szTheory Apr 28, 2026
1ab2692
feat(87-01b): extend oauth install smoke
szTheory Apr 28, 2026
ecc5203
feat(87-01b): scaffold example app oauth surface
szTheory Apr 28, 2026
d871735
feat(87-01b): wire example oauth login and settings
szTheory Apr 28, 2026
367a164
ci(87-01b): add oauth playwright workflow lane
szTheory Apr 28, 2026
e45eb49
docs(88): capture phase context
szTheory Apr 28, 2026
8e0ec91
docs(state): record phase 88 context session
szTheory Apr 28, 2026
0f73fe7
docs(88): research phase domain
szTheory Apr 28, 2026
57d1687
docs(88-01): scaffold GAUAT-07 evidence bundle
szTheory Apr 28, 2026
23d164d
docs(88-02): scaffold GAUAT-08 evidence bundle
szTheory Apr 28, 2026
f67b9fd
docs(88-01): scaffold GAUAT-07 evidence bundle
szTheory Apr 28, 2026
d5034b1
docs(88-02): scaffold GAUAT-08 clean-machine bundle
szTheory Apr 28, 2026
bf05676
chore(88-01): run MFA Playwright lane and emit raw GAUAT-07 artifacts
szTheory Apr 28, 2026
9fc4f43
docs(88-01): generate GAUAT-07 manifest and README from emitted artif…
szTheory Apr 28, 2026
5d09edc
docs(88-01): validate final GAUAT-07 artifact set and posture
szTheory Apr 28, 2026
adc1d39
docs(88-01): complete MFA backup-code rotation evidence plan
szTheory Apr 28, 2026
5b99077
test(88-02): run generated-host install-smoke lane for GAUAT-08 artif…
szTheory Apr 28, 2026
8dde6db
docs(88-02): generate GAUAT-08 manifest and README
szTheory Apr 28, 2026
bb41548
docs(88-02): validate GAUAT-08 artifact set and posture
szTheory Apr 28, 2026
200f728
docs(88-02): complete GAUAT-08 generated-host plan
szTheory Apr 28, 2026
9431f28
docs(phase-88): update tracking after wave 1
szTheory Apr 28, 2026
de9af25
fix(88-03): update sigra.uat.report to verify snapshots on older shas
szTheory Apr 28, 2026
ae70fd7
docs(88-03): write consolidated GAUAT results and update SEED-001 status
szTheory Apr 28, 2026
e788325
docs(88-03): record Phase 88 verification posture
szTheory Apr 28, 2026
9c4c7a4
docs(88-03): complete File Launch-Truth Surfaces and Close-Out Phase …
szTheory Apr 28, 2026
8aefe62
docs(phase-88): evolve PROJECT.md after phase completion
szTheory Apr 28, 2026
d45aea2
chore(gauat): finalize Phase 87 and Phase 88 UAT evidence and Phase 8…
szTheory Apr 28, 2026
effdf42
trigger ci
szTheory Apr 28, 2026
f26212c
fix(ci): add CLOAK_KEY to email_visual_regression job
szTheory Apr 28, 2026
9d4faf0
docs(gauat): mark Phase 87 provenance as PASS and disposition GO
szTheory Apr 28, 2026
c1873e7
feat(89-01): bump version to 1.20.0 and add upgrading guide
szTheory Apr 28, 2026
8bb6dd1
docs(89-01): update CHANGELOG and README for v1.20 GA
szTheory Apr 28, 2026
e751854
docs(89-01): complete 89-01-PLAN.md
szTheory Apr 28, 2026
2d77717
chore: release v1.20.0
szTheory Apr 28, 2026
788d614
fix: test failures blocking v1.20.0 release
szTheory Apr 28, 2026
8cc7a73
docs(phase-89): complete plan 02 and verification
szTheory Apr 28, 2026
5113f52
docs(phase-89): complete phase execution
szTheory Apr 28, 2026
778b5c7
docs(phase-89): evolve PROJECT.md after phase completion
szTheory Apr 28, 2026
5f4afc0
docs(milestone): complete active phases 89 and 90 before v1.20 closure
szTheory Apr 29, 2026
ab97fe6
docs(milestone): complete v1.20 GA Launch milestone
szTheory Apr 29, 2026
ac1ade0
docs: start milestone v1.21 B2B-ready & production-honest
szTheory Apr 29, 2026
5a05344
docs: define milestone v1.21 requirements
szTheory Apr 29, 2026
fa5bd4a
docs: create milestone v1.21 roadmap (6 phases)
szTheory Apr 29, 2026
d7c152e
docs(91): capture phase context
szTheory Apr 29, 2026
ca76fef
docs(state): record phase 91 context session
szTheory Apr 29, 2026
779556f
docs(91): UI design contract for org-level MFA enforcement
szTheory Apr 29, 2026
4b1a4e2
docs(91): replace generic Cancel with direction-specific dismiss copy…
szTheory Apr 29, 2026
ad93add
docs(91): UI design contract approved
szTheory Apr 29, 2026
5d5bf95
docs(91): research and validation strategy
szTheory Apr 29, 2026
048c3cc
docs(91): pattern map for downstream planning
szTheory Apr 29, 2026
69a0bd3
feat(phase-91): implement org-level MFA enforcement
szTheory Apr 29, 2026
1fcee0f
docs(phase-91): complete phase execution
szTheory Apr 29, 2026
cfc9a44
test(92-01): add failing Sigra.Authz behaviour contract tests
szTheory Apr 29, 2026
ac1d905
feat(92-01): add Sigra.Authz role-agnostic behaviour
szTheory Apr 29, 2026
e967c99
test(92-01): add failing tests for explicit-only RBAC contracts
szTheory Apr 29, 2026
d870fd4
feat(92-01): de-opinionate library RBAC seams (explicit-only roles)
szTheory Apr 29, 2026
92fb571
refactor(92-01): rename internal query alias :membership to :join_row
szTheory Apr 29, 2026
890d09f
docs(92-01): complete RBAC seam de-opinionation plan
szTheory Apr 29, 2026
ae45004
docs(phase-92): commit planning artifacts before execution
szTheory Apr 29, 2026
5e9dc72
docs(phase-92): update tracking after wave 1 (plan 92-01 complete)
szTheory Apr 29, 2026
fc1a96c
test(92-02): add failing tests for host-owned authz starter + reserve…
szTheory Apr 29, 2026
f5ea600
feat(92-02): emit host-owned Sigra.Authz starter + reserve scope RBAC…
szTheory Apr 29, 2026
ac738b9
test(92-02): add failing tests for nullable membership role + locked …
szTheory Apr 29, 2026
be272fc
feat(92-02): nullable membership role + explicit host-owned wrapper c…
szTheory Apr 29, 2026
e5fb9fe
fix(92-02): re-green Sigra.Organizations.InvitationsTest after 92-01 …
szTheory Apr 29, 2026
b7d5544
chore(92-02): regenerate install_golden fixture for Plan 92-02 templa…
szTheory Apr 29, 2026
0739999
fix(92-02): re-green test/example scaffold compile after 92-01 explic…
szTheory Apr 29, 2026
d6c41ae
docs(92-02): log DEF-92-02-01 InvitationAcceptLive audit-Multi collis…
szTheory Apr 29, 2026
41ab48a
docs(92-02): complete RBAC generator surface plan
szTheory Apr 29, 2026
882d36b
chore: merge executor worktree (wave 2: plan 92-02)
szTheory Apr 29, 2026
1968e8a
docs(phase-92): update tracking after wave 2 (plan 92-02 complete)
szTheory Apr 29, 2026
91e0c70
test(92-03): add failing tests for :role and :actor_type carry-throug…
szTheory Apr 29, 2026
d1630c9
feat(92-03): extend Sigra.Scope contract with :role and reserved :act…
szTheory Apr 29, 2026
9950bf4
test(92-03): add failing tests for :role propagation at shared org-en…
szTheory Apr 29, 2026
c1658d7
feat(92-03): wire :role propagation through shared org-enrichment seams
szTheory Apr 29, 2026
e47c3f5
docs(92-03): complete runtime role propagation plan
szTheory Apr 29, 2026
e48a8a3
chore: merge executor worktree (wave 3: plan 92-03)
szTheory Apr 29, 2026
0b839f6
docs(phase-92): update tracking after wave 3 (plan 92-03 complete)
szTheory Apr 29, 2026
b5c7423
docs(92-04): add RBAC recipe and register with ExDoc
szTheory Apr 29, 2026
caecc53
docs(92-04): complete RBAC recipe + Phase 92 close plan
szTheory Apr 29, 2026
9262ac6
chore: merge executor worktree (wave 4: plan 92-04)
szTheory Apr 29, 2026
2f5708c
docs(phase-92): update tracking after wave 4 (plan 92-04 complete)
szTheory Apr 29, 2026
897b762
docs(92): add code review report
szTheory Apr 29, 2026
f8a83ff
feat(92-fix): add Sigra.Ecto.Types.RoleAtom for atom round-trip
szTheory Apr 29, 2026
4f9ae66
fix(92-fix CR-02): membership and invitation schemas use Sigra.Ecto.T…
szTheory Apr 29, 2026
3589e70
fix(92-fix CR-03): drop null:false/default:"member" from invitations …
szTheory Apr 29, 2026
1237276
fix(92-fix CR-04 + WR-02 + WR-03): enforce role-taxonomy invariants a…
szTheory Apr 29, 2026
c9ed1e5
fix(92-fix CR-01): remove dead :require_org_owner generator pipeline
szTheory Apr 29, 2026
a70acca
chore(92-fix): regenerate install_golden fixture for CR-01 + CR-02 + …
szTheory Apr 29, 2026
7be8233
test(92-fix): add invitation-template parity assertions in organizati…
szTheory Apr 29, 2026
4b18a5d
docs(92-fix): RBAC recipe — config invariants and role-gated pipeline…
szTheory Apr 29, 2026
3250f14
fix(92-fix CR-2-01): use tagged-tuple role validation in Invitations.…
szTheory Apr 29, 2026
5cf08ed
fix(92-fix WR-2-05): make organization_members_live.ex taxonomy-agnostic
szTheory Apr 30, 2026
01a52d8
fix(92-fix WR-3-06): use configured default role on invite-form succe…
szTheory Apr 30, 2026
6defb44
docs(92): close phase 92 — verification passed (5/5 must-haves)
szTheory Apr 30, 2026
89403da
docs(92): track ship — phase 92 pushed on PR #37
szTheory Apr 30, 2026
3bf3968
docs(93): capture phase context
szTheory Apr 30, 2026
13f4bbd
docs(state): record phase 93 context session
szTheory Apr 30, 2026
2885c52
docs(94): research postgres-only declaration phase
szTheory Apr 30, 2026
ce1cdda
docs: capture phase-94 smoke follow-up todos
szTheory Apr 30, 2026
973e0e6
feat(95-01): add optional dependency registry
szTheory Apr 30, 2026
d437fa6
feat(95-01): route jwt signer through optional deps registry
szTheory Apr 30, 2026
94fa3d1
docs(95-01): complete optional dependency registry plan
szTheory Apr 30, 2026
fd0292f
feat(95-02): enforce async email dependency boundary
szTheory Apr 30, 2026
e13f349
feat(95-02): tighten bcrypt and totp dependency enforcement
szTheory Apr 30, 2026
f806cb8
docs(95-02): complete runtime dependency enforcement plan
szTheory Apr 30, 2026
55b543d
test(95-03): add failing doctor task coverage
szTheory Apr 30, 2026
3cc35d3
feat(95-03): add contextual sigra doctor task
szTheory Apr 30, 2026
83020da
test(95-03): add optional dependency warning coverage
szTheory Apr 30, 2026
283d652
feat(95-03): narrow optional dependency warning posture
szTheory Apr 30, 2026
f275c9d
fix(95-03): restore explicit doctor halt path
szTheory Apr 30, 2026
23d3a00
docs(95-03): complete optional dep doctor plan
szTheory Apr 30, 2026
660a364
test(95-04): add failing worker optional dep coverage
szTheory Apr 30, 2026
b0f4398
feat(95-04): keep lifecycle workers loadable without oban
szTheory Apr 30, 2026
dfb5b52
feat(95-04): add targeted optional dependency off ci lanes
szTheory Apr 30, 2026
c048594
docs(95-04): align optional dependency docs and verification
szTheory Apr 30, 2026
44ed82d
docs(95-04): complete optional dependency validation plan
szTheory Apr 30, 2026
92a5e2b
fix(95): close optional dependency follow-up gaps
szTheory Apr 30, 2026
d7e9ab0
fix(95): wire generated host compile warnings
szTheory Apr 30, 2026
36a8b80
feat(oauth): 96-01 implement per-provider refresh dispatch and classi…
szTheory May 1, 2026
7f62f36
feat(oauth): 96-02 persist oauth token refresh with atomic audit co-fate
szTheory May 1, 2026
50adb4d
feat(api): 96-03 emit authoritative rate limit response headers
szTheory May 1, 2026
3accda8
feat(api): 96-04 wire rate limit and oauth refresh into active seams
szTheory May 1, 2026
9104d9a
chore(planning): mark phase 96 complete in roadmap
szTheory May 1, 2026
acd76cb
chore(planning): repair GSD state after discarding broken unstaged ph…
szTheory May 1, 2026
9ee0c8b
chore(planning): mark phase 92 complete in roadmap
szTheory May 1, 2026
153cba4
docs(94-postgres-only-declaration-hard-01): create phase plan
szTheory May 1, 2026
5cde313
feat(94-01): enforce postgres-only adapter declaration on install
szTheory May 1, 2026
1ce1d6c
docs(94-01): complete 94-01-PLAN.md plan
szTheory May 1, 2026
e89a2f9
refactor(94-02): collapse core and organizations migration templates …
szTheory May 1, 2026
a4e14e8
test(94-02): update generator tests for Postgres-only migration templ…
szTheory May 1, 2026
aa52fd8
docs(94-02): complete postgres-only migration simplification plan
szTheory May 1, 2026
a1167e9
feat(94-03): simplify adjacent templates to Postgres only
szTheory May 1, 2026
f7c500d
test(94-03): assert only Postgres structure in passkey migration tests
szTheory May 1, 2026
86ee181
docs(94-03): complete simplify adjacent templates and tests plan
szTheory May 1, 2026
fbc1b87
docs(93): UI design contract
szTheory May 1, 2026
7c9e5c1
docs(93): UI-SPEC revision 1 — typography 2-weight cap + overflow ari…
szTheory May 1, 2026
f88b465
docs(93): approve UI-SPEC after checker verification
szTheory May 1, 2026
f399a20
docs(93): add validation strategy
szTheory May 1, 2026
5a864bc
docs(93): add gap-closure plans 06-10 for VERIFICATION open gaps
szTheory May 2, 2026
ba8fe0c
chore(93): WIP snapshot of plans 01-05 implementation pre-gap-closure
szTheory May 2, 2026
7110c24
test(93-07): add service-account token parity coverage to jwt_test.exs
szTheory May 2, 2026
d80f801
feat(93-09): full UI-SPEC parity LiveView template for OrganizationSe…
szTheory May 2, 2026
be6aaec
test(93-07): add service-account JWT scope-build coverage to fetch_be…
szTheory May 2, 2026
20f35ae
docs(93-07): complete plan 07 — SA parity test coverage summary
szTheory May 2, 2026
4f7c982
feat(93-09): ship CopyToClipboard hook source + asset injection + ins…
szTheory May 2, 2026
aa02764
feat(93-09): mirror template into example app + router :show route
szTheory May 2, 2026
fa929b1
docs(93-09): complete OrganizationServiceAccountsLive UI-SPEC parity …
szTheory May 2, 2026
0bc2514
feat(93-10): E2E test proving ROADMAP SC#4 SA lifecycle
szTheory May 2, 2026
559193a
feat(93-06): D-AUD-08 co-fated rollback proof for all five SA mutations
szTheory May 2, 2026
4e7ac44
docs(93-06): complete SA audit co-fated rollback plan — SUMMARY.md
szTheory May 2, 2026
9df5073
docs(93-10): complete SA E2E plan SUMMARY
szTheory May 2, 2026
9a1bbdf
feat(93-08): add SA generator gating test and fix blocking infrastruc…
szTheory May 2, 2026
0bc6508
docs(93-08): complete SA generator gating test plan summary
szTheory May 2, 2026
0f76fd9
chore: merge executor worktree (worktree-agent-adf70f06696b9195d) — p…
szTheory May 2, 2026
72422c9
chore: merge executor worktree (worktree-agent-a008484654bf59cdb) — p…
szTheory May 2, 2026
aff87e7
chore: merge executor worktree (worktree-agent-ac38d2b286e02a368) — p…
szTheory May 2, 2026
14d1d3d
chore: merge executor worktree (worktree-agent-ad42a02658be7e1b4) — p…
szTheory May 2, 2026
6d7a6d8
chore: merge executor worktree (worktree-agent-a22d63dd4c0447598) — p…
szTheory May 2, 2026
71d02a4
fix(93): resolve post-merge regressions from gap-closure plans
szTheory May 2, 2026
c07ef72
fix(93-06,93-10): align audit atomicity test schemas with usec precision
szTheory May 2, 2026
c4bdeba
docs(phase-93): mark plans 06-10 complete after gap-closure execution
szTheory May 2, 2026
bf5a8a8
fix(93): close critical findings from VERIFICATION + REVIEW
szTheory May 2, 2026
2d24d64
test(93): UAT complete - all 4 automated checkpoints pass; VERIFICATI…
szTheory May 2, 2026
6597e6d
docs(phase-93): add security threat verification + T-93-06 deferral n…
szTheory May 2, 2026
337d5db
docs(phase-93): wire T-93-06 deferral notes + drop stray SECURITY pre…
szTheory May 2, 2026
bed18c5
docs(93): ship phase 93 — PR #37 (v1.21 batch)
szTheory May 2, 2026
a93f195
Merge remote-tracking branch 'origin/main' into chore/phase-88-uat-ev…
szTheory May 2, 2026
a6fbf63
fix(install): restore raise guard for malformed repo to stop sigra-re…
szTheory May 2, 2026
f553017
docs(260502-lzl): pre-dispatch plan for PR #37 CI 6 drift fixes
szTheory May 2, 2026
ac746d5
test(install): update core template count assertion 50 → 51
szTheory May 2, 2026
2d8bf60
test(workers): align token_cleanup queue assertion with :sigra_lifecy…
szTheory May 2, 2026
5fb711c
test(install): align Oban-absent post-instructions assertions with cu…
szTheory May 2, 2026
043fb78
fix(install): add pipeline :auth_rate_limit to generated router template
szTheory May 2, 2026
06c1280
docs(260502-lzl): pre-dispatch plan for PR #37 CI 6 drift fixes
szTheory May 2, 2026
80ecae7
chore: merge quick task worktree (worktree-agent-a2b0f4fe5dac19bb6)
szTheory May 2, 2026
8bd7694
docs(quick-260502-lzl): PR #37 CI 6 mechanical drift fixes — SUMMARY …
szTheory May 2, 2026
62a1dbb
docs(260502-oc7): pre-dispatch plan for PR #37 CI groups B+D
szTheory May 2, 2026
611f48a
fix(workers): restore Oban-off contract — modules stay loadable, stub…
szTheory May 2, 2026
267033b
fix(oauth): defer Assent.Strategy.OAuth2.refresh_access_token resolut…
szTheory May 2, 2026
fe6acd9
fix(ci): pass required :roles keyword to admin_org_ids_from_membershi…
szTheory May 2, 2026
83e1514
test(install_golden): rebless STDOUT fixture after Group D2 + Group B…
szTheory May 2, 2026
022b35b
chore: merge quick task worktree (worktree-agent-ae63eb1e1d0b25fdd)
szTheory May 3, 2026
367755c
docs(quick-260502-oc7): PR #37 CI groups B + D — SUMMARY + STATE
szTheory May 3, 2026
5f32cfc
fix(ci): add CLOAK_KEY env to three Example app smoke jobs
szTheory May 3, 2026
6a573ee
docs(state): record manual CI Group C partial fix (CLOAK_KEY env)
szTheory May 3, 2026
4093a3c
fix(example/test): restore Phoenix.Endpoint persistent_term in Instal…
szTheory May 3, 2026
946f512
fix(rate-limit): fail open when :hammer_module config is missing
szTheory May 3, 2026
e4b4add
fix(example/test): remove persistent_term/ets shims from InstallCompi…
szTheory May 3, 2026
b2de8ec
fix(invitations): give accept-invitation audit a unique Multi step name
szTheory May 3, 2026
085e020
test(install_compile): assert warning path fragment that is cwd-stable
szTheory May 3, 2026
790c1d8
fix(ci): MFA evidence-report env match + email-visual project names
szTheory May 3, 2026
b05b9e8
fix(rate-limit): Noop limiter returns {:allow, map} not {:allow, inte…
szTheory May 3, 2026
2974be6
fix(ci): MFA report cwd + email-visual failure diagnostics upload
szTheory May 3, 2026
2483df0
test(playwright): rebaseline email-visual + OAuth tooltip from CI Lin…
szTheory May 3, 2026
de1c564
docs(ecosystem): add ecosystem-overview intro guide
szTheory May 6, 2026
7a4d292
docs(ecosystem): correct Sigra API names and resolver callback count
szTheory May 6, 2026
ae11d48
chore(v1.21): reconcile milestone audit bookkeeping
szTheory May 6, 2026
72f455b
chore: archive v1.21 milestone
szTheory May 6, 2026
8b94543
fix(ci): align Noop limiter test + OAuth evidence-report cwd
szTheory May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
705 changes: 703 additions & 2 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion .github/workflows/hex-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:
type: string

permissions:
contents: read
contents: write

jobs:
publish:
Expand Down Expand Up @@ -66,6 +66,16 @@ jobs:
- name: Verify release version in mix.exs
run: grep -n "@version \"${{ inputs.release_version }}\"" mix.exs

- name: Sync changelog summary into GitHub release body
env:
GH_TOKEN: ${{ github.token }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: |
chmod +x scripts/release/sync_release_summary.sh
scripts/release/sync_release_summary.sh \
"${{ inputs.release_version }}" \
"${{ inputs.tag }}"

- name: Fetch library deps
run: mix deps.get

Expand Down
24 changes: 23 additions & 1 deletion .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,31 @@ jobs:
config-file: release-please-config.json
manifest-file: .release-please-manifest.json

sync-release-summary:
name: Sync GitHub release summary
needs: release-please
if: ${{ needs.release-please.outputs.release_created == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ needs.release-please.outputs.tag_name }}

- name: Sync changelog summary into GitHub release body
env:
GH_TOKEN: ${{ secrets.RELEASE_PLEASE_TOKEN || github.token }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: |
chmod +x scripts/release/sync_release_summary.sh
scripts/release/sync_release_summary.sh \
"${{ needs.release-please.outputs.version }}" \
"${{ needs.release-please.outputs.tag_name }}"

publish-hex:
name: Publish to Hex.pm
needs: release-please
needs: [release-please, sync-release-summary]
if: ${{ needs.release-please.outputs.release_created == 'true' }}
runs-on: ubuntu-latest
permissions:
Expand Down
2 changes: 1 addition & 1 deletion .planning/AUDIT-ATOMICITY-DEFAULTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

### D-AUD-06 — Caller contract when audit insert fails (audit-only paths)

- Public functions that today return **`:ok`** and use **`log_safe`/`log_multi_safe`** for **side-channel audit** keep **`:ok`** on audit subsystem failure; emit **`[:sigra, :audit, :log_safe_error]`** (or the same telemetry contract as `emit_log_safe_error`) so operators can alert; **raise** only on programmer-wiring errors. **`@doc`** must state **`:ok` does not guarantee** the audit row exists.
- Public functions that today return **`:ok`** and use **`log_safe`/`log_multi_safe`** for **side-channel audit** keep **`:ok`** on audit subsystem failure **when the audit row is not co-fated with a durable partner write**. This covers three legitimate sub-classes: **detection-only** (the audit row is the forensic record), **pre-domain** (the event fires before a persistence target exists), and **audit-only helpers**. Emit **`[:sigra, :audit, :log_safe_error]`** (or the same telemetry contract as `emit_log_safe_error`) so operators can alert; **raise** only on programmer-wiring errors. **`@doc`** must state **`:ok` does not guarantee** the audit row exists.

### D-AUD-07 — ExUnit layout for audit fault injection

Expand Down
73 changes: 73 additions & 0 deletions .planning/MILESTONES.md
Original file line number Diff line number Diff line change
Expand Up @@ -585,3 +585,76 @@
- [v1.15 Requirements](milestones/v1.15-REQUIREMENTS.md)

---

## v1.20 GA Launch (SEED closure + public release) (Shipped: 2026-04-28)

**Scope:** 6 phases (**85–90**), 14 on-disk plans. (Phase 90 waived).

**What shipped:** **AUD-21** — OAuth audit atomicity closure, converting remaining `log_safe/3` clusters in Phase 45 T2 to atomic `Repo.transaction/1` + `Ecto.Multi`. **GAUAT-01..09** — Fully automated E2E harnesses for email visual QA, OAuth real-credential cycles, MFA backup-code rotation, and getting-started proof, resulting in SEED-001 closure. **LAUNCH-01..07** — Hex v1.20.0 publish, README promotion, and CHANGELOG alignment.

### Key accomplishments

1. **AUD-21 closure** — Phase 9 C-1 caveat officially downgraded to PASS.
2. **GAUAT zero-human proof** — Replaced all manual SEED-001 testing requirements with deterministic CI automation (Playwright + Premailex).
3. **v1.20.0 Public Launch** — Reached the "use this in production" inflexion point.

### Stats

- **Requirements:** 21/21 requirements satisfied/waived.
- **Milestone audit:** **passed** ([`milestones/v1.20-MILESTONE-AUDIT.md`](milestones/v1.20-MILESTONE-AUDIT.md)).
- **Timeline:** 2026-04-25 → 2026-04-28.

### Tech debt carried forward

- Lockspire glue package deferred.
- Week-one launch-feedback follow-ups deferred to patch milestone.

**Archive:**

- [v1.20 Roadmap](milestones/v1.20-ROADMAP.md)
- [v1.20 Requirements](milestones/v1.20-REQUIREMENTS.md)
- [v1.20 Milestone Audit](milestones/v1.20-MILESTONE-AUDIT.md)

---

## v1.21 B2B-ready & production-honest (Shipped: 2026-05-06)

**Scope:** 6 phases (**91–96**), 33 on-disk plan summaries (across 26 PLAN.md files; some phases inline-summarized).

**What shipped:** First milestone after v1.20 public launch. Three legs converged. **Leg 1 — B2B trust** (Phases **91**, **92**, **93**) — `Sigra.Plug.RequireOrgMfa` + `enforce_mfa_for_members` + admin LiveView toggle + atomic `organization.mfa_policy_change` audit row (**B2B-01**); `Sigra.Authz` `can?/3` behaviour + nullable `role` on `OrganizationMembership` + scope-struct `:role` propagation + role-based-access-control recipe (zero opinionated roles in `lib/sigra/`) (**B2B-02**); org-scoped service-account tokens via `client_credentials` grant on existing JWT path + `current_scope.actor_type: :service_account` discriminator + 5 SA-mutation rollback proofs (**B2B-03**, re-verified 22/22 after gap-closure plans 06–10 + critical fixes in commit `bf5a8a8`). **Leg 2 — Production hardening** (Phases **94**, **95**) — `mix sigra.install` refuses non-Postgres adapter at pre-flight + removed MySQL/SQLite placeholder branches + aligned `mix.exs` description / README / getting-started narrative; environmental Oban-test caveat closed in 2026-05-06 audit (**HARD-01**); `Sigra.OptionalDeps` SOT + raise-on-missing for Oban/Bcrypt/EQRCode + `mix sigra.doctor` per-feature dep matrix + 3 dep-off CI lanes (**HARD-02**, only v1.21 phase with `nyquist_compliant: true`). **Leg 3 — OAuth + API polish** (Phase **96**) — per-provider OAuth refresh dispatch for GitHub/Apple/Facebook/Generic via Assent + atomic `oauth.token_refreshed` audit (**HARD-03**); single-pass `Sigra.Plug.RateLimit` emitting `X-RateLimit-Limit/Remaining/Reset` + `Retry-After` from Hammer state, wired into generated host's `:auth_rate_limit` pipeline (**API-01**) — 122 passing tests across 4 evidence sections.

### Key accomplishments

1. **Org-level MFA enforcement** — Atomic policy-change audit + plug + LiveView gate; full library suite green (33 doctests, 3 properties, 2214 tests, 0 failures).
2. **RBAC seams without opinions** — `Sigra.Authz` ships as behaviour-only; library has zero `:owner / :admin / :member` constants; recipe is the only place those names appear, illustratively.
3. **M2M service-account tokens** — `client_credentials` grant on existing JWT path; scope-struct `actor_type` discriminator; SA short-circuits user-membership and org-MFA checks; 5/5 mutations co-fated with audit (D-AUD-08).
4. **Honest Postgres-only narrative** — Aligned the documented adapter support to what CI actually exercises and what migrations actually implement.
5. **Optional-dep boot validation** — `mix sigra.doctor` reports per-feature status; missing optional deps raise tagged errors at first use instead of compiling to silent `nil`; CI matrix toggles each off.
6. **OAuth refresh dispatch + rate-limit headers** — Closed the `lib/sigra/oauth.ex:174` "not yet implemented" warning across 4 providers with atomic audit; clients on rate-limited paths get standards-compliant headers for backoff.

### Stats

- **Requirements:** 7/7 requirements satisfied (B2B-01, B2B-02, B2B-03, HARD-01, HARD-02, HARD-03, API-01).
- **Milestone audit:** **tech_debt → reconciled** ([`milestones/v1.21-MILESTONE-AUDIT.md`](milestones/v1.21-MILESTONE-AUDIT.md)). Substantive 7/7 with passing test evidence; bookkeeping reconciled 2026-05-06.
- **Timeline:** 2026-04-28 → 2026-05-06 (8 days).
- **Cross-phase wires verified:** B2B-02 `:actor_type` reservation → B2B-03 `:service_account` population; B2B-02 host-supplied `:roles` → B2B-03 SA short-circuit; HARD-01 Postgres-only → HARD-02 `mix sigra.doctor`; HARD-03 OAuth refresh → API-01 rate-limit headers.

### Known deferred items at close (non-blocking)

- 2 install-smoke pending todos from 2026-04-30: JOSE.JWT.peek_payload/1 undefined warning + transient Postgres `too_many_connections` during install smoke (both surfaced during Phase 94 work).
- `DEF-92-02-01` — InvitationAcceptLive audit-Multi-step name collision (pre-existing bug from commit `5e6c026`, predates Phase 92; recommended landing point not yet assigned).
- Nyquist VALIDATION.md gaps — only Phase 95 has `nyquist_compliant: true`; 91/92/93 have draft VALIDATION.md (`nyquist_compliant: false`); 94/96 missing entirely. Optional retroactive fill via `/gsd-validate-phase`.

### Tech debt carried forward

- Webhooks (`WH-01..03`) — deferred to v1.22 as its own design-first milestone (event schema, signed delivery, retry/dead-letter, host UX).
- Tier-3 polish carried in Future Requirements: Session UX (`SESS-01..03`), Email overrides + i18n + bounce (`EMAIL-01..03`), Passkey multi-authenticator + recovery (`PK-01..03`), DataExport depth (`DATA-01..03`).
- `sigra_lockspire` glue package per **ADR 001** — still awaiting companion-app trigger.

**Archive:**

- [v1.21 Roadmap](milestones/v1.21-ROADMAP.md)
- [v1.21 Requirements](milestones/v1.21-REQUIREMENTS.md)
- [v1.21 Milestone Audit](milestones/v1.21-MILESTONE-AUDIT.md)

---
Loading
Loading