Your Name
e110e535c8
fix(dialog): use uuid.New() for ticket and audit IDs
...
- Replace fmt.Sprintf with sess.ID+nanotime that generated non-UUID strings
- ticket creation and audit logging now use github.com/google/uuid
- Fixes 500 error when webhook processes messages with PG store
- All 23/23 tests pass, verified Gate B end-to-end
2026-05-04 08:25:46 +08:00
Your Name
7625a27932
fix(integration): fix TestHealthCheck_ReadyEndpoint to use newTestApp
...
- newTestApp now sets cfg.Runtime.Env='test', which allows memory mode
- Ready endpoint test now goes through the full router (not direct handler)
- All integration health tests pass; full suite 23/23 PASS
- Doc updates: P0 execution board (evidence + TL-P0-1/TL-P0-2 status), QA gate (TL-P0-1/TL-P0-2 completed), production checklist (Gate B requirements)
2026-05-04 08:04:39 +08:00
Your Name
b946926efa
fix(config+app): production fail-fast + readiness收紧
...
1. config.go: AI_CS_ENV runtime mode with production restriction
- New RuntimeConfig.Env field (AI_CS_ENV / AI_CS_RUNTIME_ENV)
- production + Postgres.Enabled=false → Load() returns error
- production + empty webhook secret → Load() returns error
- normalizeRuntimeEnv: dev/dev/ → development, prod/production → production, test → test
2. app.go: probe.SetReady only when store is confirmed ready
- Postgres.Enabled: probe.SetReady(true) after DB+migration OK
- Memory mode: probe.SetReady(false) — not production-ready
3. health_handler_test.go: add probe live+ready state transition tests
4. config_test.go: add TestLoad_RejectsProdWhenPostgresDisabled,
TestLoad_RejectsProdWhenWebhookSecretMissing
5. app_test.go: add TestNew_RejectsMemoryModeWithoutExplicitNonProdEnv,
TestNew_AllowsMemoryModeInTestEnv, TestNew_WithPostgresEnabled_*
for invalid DSN and migration-failure paths
Phase 1 (code gate) objectives met:
✅ prod cannot fall back to memory store
✅ readiness reflects actual store readiness
✅ both changes have test coverage
2026-05-04 07:38:10 +08:00
Your Name
10d79299b5
docs: 优化报告V2 - P0已全部修复,Phase2质量门禁通过
2026-05-03 20:22:41 +08:00
Your Name
dc937336c5
docs: LLM大模型信息追踪工具调研报告
2026-05-03 20:21:44 +08:00
Your Name
687c4535f8
fix: P0-1 RateLimiter并发写安全 + P0-2工单操作错误码区分 + P1 rows.Close修复
...
P0-1 (limits.go): Allow()方法改为全程使用写锁保护counters map读写,避免RLock写入时的data race
P0-2 (ticket_workflow.go+ticket_handler.go): Assign/Resolve/Close操作先查询ticket存在性和状态,返回明确的CS_TICKET_4001/CS_TKT_4002/CS_TICKET_4092/CS_TICKET_4093错误码,handler根据错误前缀路由HTTP状态码
P1-1 (ticket_store.go): 移除GetStats中3处手动rows.Close(),只保留defer Close()
2026-05-01 20:56:25 +08:00
Your Name
b74981de30
docs: Codex 全面代码审查报告 PRODUCTION_REVIEW_REPORT
2026-05-01 17:44:53 +08:00
Your Name
01135eca27
docs: 新增生产上线文档 PRODUCTION_LAUNCH.md
...
包含:项目概述、技术架构、API 清单、质量验证结果、部署指南、仓库分布、已知限制
2026-05-01 16:51:16 +08:00
Your Name
3e9022a303
fix(ticket_handler): 将 auditTicketChange 死代码接入 Assign/Resolve/Close
...
auditTicketChange (ticket_handler.go:104) 自定义义以来从未被调用:
- Assign/Resolve/Close 成功后均未记录状态变更审计日志
- 已有的单元测试在 mockTicketService 里单独记录事件,但 handler 层缺失
修改内容:
- Assign/Resolve/Close 成功后调用 h.auditTicketChange()
- auditTicketChange 新增 actorID 参数(原来硬编码为 system)
- 修改后 handler 层和 service 层各自记录一条 audit 日志(测试断言相应改为 len==2,取 [1])
- nil 保护保持不变(h==nil || h.audit==nil)
同时更新 ticket_handler_test.go:
- assign/resolve 测试断言从 len==1 改为 len==2,取最后一条
- 新增 TestTicketHandlerCloseAuditsStateChange 测试
handlers 覆盖率:85.9% → 87.1%
2026-05-01 13:29:00 +08:00
Your Name
d88369f880
test(P1): 补齐 domain/intent、domain/message、domain/ticketstats、platform/logging、service/intent、config 测试
...
**新增测试文件**:
- internal/domain/intent/intent_test.go: 6 个测试(Recognize 各意图分支、containsAny)
- internal/domain/message/message_test.go: 4 个测试(UnifiedMessage 各字段)
- internal/domain/ticketstats/stats_test.go: 5 个测试(Stats 各字段、零值、nil map)
- internal/platform/logging/logger_test.go: 6 个测试(NewLogger 各日志级别)
- internal/service/intent/service_test.go: 6 个新增测试(通用意图、大小写、空格、containsAny)
**增强测试文件**:
- internal/config/config_test.go: +11 个测试(getEnvBool 全部分支、getEnvInt 无效值、getEnvInt64)
- internal/app/app_test.go: +3 个测试(Shutdown 关闭器顺序、nil 分支)
**覆盖率提升**:
- internal/service/intent: 80.8% → **100.0%** ✅
- internal/platform/logging: 0% → **100.0%** ✅
- internal/config: 70.6% → **82.4%** (+11.8%)
- 整体覆盖率: 76.6% → **77.1%** (+0.5%)
Ref: test/PHASE2_TEST_PLAN.md P1-1, P1-2
2026-05-01 11:43:05 +08:00
Your Name
6b3ef95a9a
test(P1): 补齐 webhook HandleChannel 和 clientIP 测试
...
新增测试(internal/http/handlers):
- TestHandleChannel_OverridesChannel: channelOverride 覆盖请求 body 中的 channel
- TestHandleChannel_WithEmptyOverride: 空 channelOverride 使用 body 中的 channel
- TestHandleChannel_RejectsNonPost: GET 方法返回 405
- TestHandleChannel_RejectsMissingFields: 缺失必填字段返回 400
- TestHandleChannel_EmptyBody: 空 body 返回 400
- TestClientIP_WithPort: 带端口的 remoteAddr 解析
- TestClientIP_NoPort: 不带端口的 remoteAddr 解析
**覆盖率提升**:
- internal/http/handlers: 84.4% → **85.9%** (+1.5%)
- 整体覆盖率: 76.3% → **76.6%** (+0.3%)
- P1 目标达成 ✅ (handlers >85%)
Ref: test/PHASE2_TEST_PLAN.md P1
2026-05-01 10:41:39 +08:00
Your Name
36b9d0387e
test(P0-5): 补齐 health handler 和 ticket stats handler 测试
...
新增 internal/http/handlers/health_handler_test.go:
- TestHealthHandler_Live_ReturnsUPWhenLive
- TestHealthHandler_Live_ReturnsDOWNWhenNotLive
- TestHealthHandler_Live_WithNilProbe
- TestHealthHandler_Ready_WithFailingChecker
- TestHealthHandler_Ready_WithPassingChecker
- TestHealthHandler_Health_ReturnsOK
- TestTicketStatsHandler_Get_Success
- TestTicketStatsHandler_Get_Error
- TestTicketStatsHandler_Get_NilAudit
**覆盖率提升**:
- internal/http/handlers: 78.4% → **84.4%** (+6.0%)
- 整体覆盖率: 74.8% → **76.3%** (+1.5%)
所有 P0 任务完成!Phase 2 测试补齐全部达成 🎉
Ref: test/PHASE2_TEST_PLAN.md P0-5
2026-05-01 10:03:51 +08:00
Your Name
093df85d83
test(P0-4): 补齐 health platform 测试 - Evaluate 覆盖 100%
...
扩展 internal/platform/health/health_test.go(+5 个测试):
- TestEvaluate_NoCheckers_ReturnsTrue: nil checkers → true
- TestEvaluate_EmptyCheckers_ReturnsTrue: empty checkers → true
- TestEvaluate_AllCheckersPass_ReturnsTrue: 全通过 → true
- TestEvaluate_SomeCheckersFail_ReturnsFalse: 部分失败 → false
- TestEvaluate_NilChecker_Skipped: nil checker 跳过不 panic
- TestEvaluate_AllCheckersFail_ReturnsFalse: 全失败 → false
**覆盖率提升**:
- internal/platform/health: 38.1% → **100.0%** (+61.9%) ✅
- 整体覆盖率: 73.6% → **74.8%** (+1.2%)
Ref: test/PHASE2_TEST_PLAN.md P0-4
2026-05-01 09:58:31 +08:00
Your Name
a11038af40
test(P0-3): 补齐 router 测试覆盖
...
扩展 internal/http/router_test.go(+3 个测试):
- TestRouter_TicketsSubpaths: /assign、/resolve、/close 路由注册验证
- TestRouter_SessionsFeedbackHandoff: /feedback、/handoff 路由注册验证
- TestRouter_UnknownSessionsPath_Returns405: 未知 sessions 子路径返回 405
- TestRouter_UnknownTicketsPath_Returns405: 未知 tickets 子路径返回 405
使用 HEAD 方法避免触发 nil service panic(仅验证路由注册)
**覆盖率提升**:
- internal/http (router): 41.3% → **74.7%** (+33.4%)
- 整体覆盖率: 71.3% → **73.6%** (+2.3%)
Ref: test/PHASE2_TEST_PLAN.md P0-3
2026-05-01 09:53:59 +08:00
Your Name
4dcd63072c
test(P0-2): 补齐 postgres store ticket workflow 测试
...
新增 internal/store/postgres/ticket_workflow_test.go(8 个测试):
- TestTicketWorkflowStore_ListOpen: 开放工单查询
- TestTicketWorkflowStore_Assign: 工单分配(正常+已分配冲突)
- TestTicketWorkflowStore_Resolve: 工单解决
- TestTicketWorkflowStore_Close: 工单关闭(正常+非resolved错误)
- TestTicketWorkflowStore_NilDB: nil db 错误处理(4 个子测试)
**覆盖率提升**:
- internal/store/postgres: 43.1% → **62.0%** (+18.9%)
- 整体覆盖率: 66.2% → **71.3%** (+5.1%)
✅ Phase 2 目标 >70% 已达成
Ref: test/PHASE2_TEST_PLAN.md P0-2
2026-05-01 09:38:52 +08:00
Your Name
c038955103
test(P0-1): 补齐 memory store ticket workflow 测试
...
新增 internal/store/memory/ticket_workflow_test.go:
- TestTicketStore_ListOpen: 测试开放工单过滤逻辑
- TestTicketStore_Assign: 测试工单分配(正常+已分配冲突)
- TestTicketStore_Resolve: 测试工单解决
- TestTicketStore_Close: 测试工单关闭(正常+非resolved错误)
**覆盖率提升**:
- internal/store/memory: 59.1% → **88.3%** (+29.2%)
- 整体覆盖率: 62.6% → **66.2%** (+3.6%)
Ref: test/PHASE2_TEST_PLAN.md P0-1
2026-05-01 09:08:59 +08:00
Your Name
5a8759fedd
docs: Phase 2 测试质量提升规划
...
新增 test/PHASE2_TEST_PLAN.md,详细规划上线后测试补齐路径:
**P0 优先级(2周内)**:
- memory/postgres store 达标 >60%
- router/health handler 达标 >60%
- handlers 补齐 HandleChannel/TicketStatsHandler.Get
**P1 优先级(4周内)**:
- Domain 包(6个)基础测试 >30%
- logging/dialog/app 提升至 >75%
**Phase 2 目标**:整体覆盖率从 62.6% → >70%
Ref: PRODUCTION_PHASE1_STATUS.md §8 测试覆盖率
2026-05-01 09:04:31 +08:00
Your Name
61d5152035
test: add router and health handler tests for Phase 2 coverage
...
- TestRouter_HealthEndpoint: health/live/ready endpoints return 200
- TestRouter_UnknownPath: unknown paths return 404
- TestRouter_WebhookChannel_MissingChannel: empty channel returns 400
- TestRouter_WebhookPath_CanBeCalledWithGET: GET /webhook returns 405
- TestRouter_TicketsList_POST_Returns405: POST /tickets returns 405
- TestRouter_SessionsRoute_OnlyPOST: nil Sessions returns 404
- TestProbe defaults: IsLive=true, IsReady=false on NewProbe()
- TestProbe_SetLive/SetReady: atomic load/store correctness
Ref: PRODUCTION_PHASE1_STATUS.md §8.3 P1/P2 coverage gaps
2026-05-01 08:47:04 +08:00
Your Name
23b2a7c17f
docs: 报告验证结果 - 专业工具链独立检查
...
所有数据经验证真实可信:
- 构建/vet/测试全部通过
- 覆盖率误差<0.1%
- P1问题确认存在
- 依赖版本验证通过
2026-04-21 22:19:38 +08:00
Your Name
7f4be9be2c
docs: 审查报告验证结果 - 所有数据真实可信
...
验证结论: 报告完全真实
- 三服务构建/go vet/测试通过率全部匹配
- 覆盖率数据误差<0.1%(不同时间生成)
- TokenVerifyMiddleware 40.4%/parseRSAPublicKey 0% 验证确认
- SQL参数化验证确认/依赖版本验证确认
2026-04-21 22:08:01 +08:00
Your Name
e1203cfb3c
docs: 项目全面系统性审查报告 - 构建/测试/安全/覆盖率分析
...
审查结果: A- (优秀)
- 三服务 57/57 测试包全部通过,零失败
- go vet 三服务零警告
- 无 SQL 注入/硬编码凭证/敏感日志风险
- P1 优先项: TokenVerifyMiddleware覆盖率40.4%需补充、db_token_backend goroutine可靠性
2026-04-21 20:57:09 +08:00
Your Name
ecfde0e887
P4-D: secret治理和KMS表述清理
...
domain/account.go: CredentialKMSKeyAlias → CredentialKeyAlias + 注释说明(非KMS)
repository/account.go: 字段映射同步更新(SQL列名credential_kms_key_alias保持不变避免迁移)
security/kms_service.go: 添加模块顶部注释,区分本地加密与真实KMS服务,明确ProviderType="local"为本地实现
2026-04-21 20:32:31 +08:00
Your Name
07614339cb
P4-C: IAM闭环 - SubjectID审计注入/Scope-UserType匹配校验
...
audit.Event: 新增OperatorID字段 + WithSubjectID/EnrichEventWithSubjectID工具函数
domain service: account/package/settlement三处emitAudit已注入EnrichEventWithSubjectID
WithIAMClaims: auth中间件同时注入SubjectID到审计context
scope model: 新增ValidateUserTypeScopeMatch函数(supply用户不能用consumer:* scope)
scope_auth: 新增RequireScopeWithUserType中间件 + ValidateScopeCodeMatch
scope_usertype_test: 覆盖supply跨租户访问consumer资源的403拦截场景
docs: 2026-04-21-iam-tenant-operator-scope-analysis.md 完整闭环分析
2026-04-21 20:29:48 +08:00
Your Name
b193e0aab9
P4-B: supply-api大文件拆分分析 + InvariantChecker接入决策
...
supply_api.go(1048行): 6分区记录(Account/Package/Billing/Settlement/Earning/Helpers)
runtime.go(589行): 8分区记录(input解析/资源初始化/storeBundle/securityBundle等)
auth.go(891行): 9分区记录(bruteforce/queryReject/bearer/verify/authz等)
gateway未接入能力: compliance/rules 清单已记录
InvariantChecker决策: 接入真实写路径(非删除),CheckWithdrawBalance等有业务价值
拆分执行计划: 按Account→Package→Billing→Settlement顺序小步执行
2026-04-21 19:04:03 +08:00
Your Name
3b70fe1865
P4-A: 三服务共享auth/logging能力 - 共享包边界定义/golden测试/契约测试
...
- gateway/internal/shared/: 新建 shared/auth 和 shared/logging 包
- shared/logging: LogEntry/Logger/NewLogger/sanitizeFields, 7个golden output测试
- shared/auth: ExtractBearerToken/HasExternalQueryKey/WriteAuthError/AuditEvent, 8个契约测试
- docs/plans/2026-04-21-shared-auth-logging-analysis.md: P4-A完整分析文档
迁移顺序: logging(第一步) -> auth基础(第二步) -> audit(第三步) -> 契约测试(第四步)
共享边界: JWT验证/token状态查询/授权策略/BruteForce保持服务特有
2026-04-21 19:00:25 +08:00
Your Name
8c5ab32e2e
P3-D: supply-api后台worker shutdown纪律 - partition维护取消/outbox优雅停止
2026-04-21 18:53:01 +08:00
Your Name
e249a9160b
P3-C: 三服务可观测面统一 - metrics端点统一/健康检查别名/traceID透传
...
Gateway:
- remote_runtime.go: P3-C-08 从请求上下文透传 X-Request-Id 到 platform-token-runtime
Supply-api:
- 新建 internal/metrics/metrics.go: HTTP请求计数/latency/token发布/worker queue指标 (Prometheus-text)
- 新建 internal/metrics/metrics_test.go: 6个测试覆盖
- bootstrap.go: 注册 /metrics (P3-C-01/04)、/health、/healthz 别名 (P3-C-05)
Platform-token-runtime:
- bootstrap.go: 添加 /health 和 /livez 别名 (P3-C-05)
三服务 /metrics 统一为 text/plain; version=0.0.4
三服务 /health 端点统一别名
Gateway → platform-token-runtime 透传 trace ID
2026-04-21 18:40:43 +08:00
Your Name
472d9ad4c1
P3-B: Router 熔断器实现 - 健康检查/状态机/半开试探
...
Gateway:
- ProviderHealth 新增熔断器字段 (CircuitState, ConsecutiveFailures, LastStateChange, OpenReason)
- CircuitBreakerConfig 熔断器配置 (FailureRateThreshold=50%, ConsecutiveFailureThreshold=5, HalfOpenSuccessThreshold=3, OpenTimeout=30s)
- circuit.go: 熔断器状态机 (Closed→Open→HalfOpen→Closed)
- healthcheck.go: 后台健康检查循环 (ProviderHealthCheckInterval 探测 + 自动半开转换)
- RecordResult 集成熔断器状态转换
- isProviderAvailable: CircuitOpen=false, CircuitHalfOpen=true (允许试探)
- GetCircuitState/SetCircuitConfig 管理接口
- metrics.go: 新增 circuit_state_changes_total 指标
- bootstrap.go: BuildServer 返回 ServerBundle(含 Router 和 ShutdownFunc)
- main.go: 适配 ServerBundle,graceful shutdown 停止健康检查器
- bootstrap_test.go: 适配 ServerBundle
17 个新测试,50 个 router 测试全部通过
2026-04-21 17:46:02 +08:00
Your Name
ae2b1bfe75
P3-A: Token Runtime 缓存层实现 - HTTPTimeout/LRU淘汰/命中率指标
...
Phase 3-A 完整实现,包含:
Gateway (lijiaoqiao/gateway):
- RemoteTokenRuntime 缓存实现: active=30s/expired=2m/revoked=10m TTL淘汰
- LRU 容量淘汰 (max_entries=10000,插入顺序淘汰)
- HTTPTimeoutConfig: 4个环境变量 (Dial/KeepAlive/Read/Write/MaxIdle)
- 缓存命中率指标: GetCacheHitRate() + 实例级别统计
- 上游延迟指标: RecordTokenRuntime() histogram
- buildTimeoutClient: 基于 HTTPTimeoutConfig 的 HTTP 客户端工厂
- 新增测试: 22个矩阵测试 (remote_runtime_matrix_test.go, config_test.go)
Platform Token Runtime (lijiaoqiao/platform-token-runtime):
- metrics/metrics.go: GetCacheHitRate() 方法
- inmemory_runtime.go: GetCacheHitRate() 实现
变更文件 (8 modified + 5 new):
- gateway/internal/middleware/remote_runtime.go # 核心缓存实现
- gateway/internal/middleware/remote_runtime_test.go
- gateway/internal/middleware/remote_runtime_cache_test.go
- gateway/internal/middleware/remote_runtime_matrix_test.go
- gateway/internal/middleware/remote_runtime_metrics_test.go
- gateway/internal/metrics/metrics.go # 新增
- gateway/internal/config/config.go # HTTPTimeoutConfig
- gateway/internal/config/config_test.go
- gateway/internal/app/bootstrap.go # 初始化顺序
- gateway/internal/router/router.go # 指标注入
- platform-token-runtime/internal/metrics/metrics.go # 新增
- platform-token-runtime/internal/app/bootstrap.go
- platform-token-runtime/internal/auth/service/inmemory_runtime.go
2026-04-21 17:27:51 +08:00
Your Name
1fec3e981d
feat(ci): 实现 Phase 1/2 严格退出标准的所有代码实现
...
Phase 1 Criterion 4: contract tests 场景清单 → backend-verify.sh --phase1-contract-gate(含四个场景:合法token全链路、吊销拒绝、scope不足拒绝、runtime快速失败),repo_integrity_check.sh 集成调用
Phase 2 Criterion 1: manifest.json 系统(lib/manifest_lib.sh + staging_release_pipeline.sh),run_id 作为硬门禁,manifest_hard_gate_run_id() 验证非空
Phase 2 Criterion 2: superpowers_stage_validate.sh exit 1 条件从 NO_GO 扩展到 CONDITIONAL_GO,staging 硬门禁不再放行条件通过
Phase 2 Criterion 3: DEFERRED 语义修正,CONDITIONAL_GO 不再出现在复审结论选项中;CONDITIONAL_GO 在 pipeline 中强制 exit 1
Phase 2 Criterion 5: cross_service_smoke.sh 从 DESIGN_ONLY 变为可执行(exit 0=PASS/1=FAIL/2=SKIP_LOCAL_PLACEHOLDER),纳入 staging_release_pipeline.sh STEP-03
Phase 2 Criterion 4: 配置分离(已之前落地,本次确认)
环境问题记录: docs/plans/2026-04-21-environmental-issues-log.md
- P3-A: HTTP timeout + cache eviction(需要真实 staging env + env var 热加载支持)
- P3-B/C: /metrics 端点(需要 Prometheus scrape 配置 + 运维介入)
- P3-D: graceful shutdown(需要 staging 流量压测验证)
2026-04-21 12:14:50 +08:00
Your Name
c59204049a
docs(ci): define cross-service smoke taxonomy
2026-04-21 09:38:37 +08:00
Your Name
b3e34c6e36
feat(ci): normalize shared environment semantics
2026-04-21 09:34:29 +08:00
Your Name
3f509d1a6c
docs(ci): define real staging gate rules
2026-04-21 09:28:27 +08:00
Your Name
3aeddc0b43
docs(ci): define release manifest contract
...
Add the run_id and manifest contract doc, reserve the reports/releases tree, record the decision in the execution log, and annotate the four release scripts with their planned manifest-based inputs.
2026-04-21 09:23:54 +08:00
Your Name
d98b1fb262
docs(ci): define phase1 contract gate
...
Add the cross-service contract gate documentation, create the Phase 1 checklist, wire explicit contract-gate design slots into backend-verify and repo integrity scripts, and mark P1-D complete in the plan.
2026-04-21 09:20:33 +08:00
Your Name
fb659e8c96
docs(plan): complete auth rollback and comms notes
...
Add explicit rollback conditions and the compatibility-window README/ADR draft, record the rollback target in the execution log, and mark P1-C-07 and P1-C-08 complete in the plan.
2026-04-21 09:16:56 +08:00
Your Name
c3ac7cdbae
docs(plan): capture auth convergence rollout
...
Add the auth implementation convergence notes for gateway and supply-api, record the agreed rollout strategy in the execution log, and mark P1-C-01 through P1-C-06 complete in the master plan.
2026-04-21 09:15:18 +08:00
Your Name
a9108dd390
docs(plan): record token schema alignment decision
...
Add the token runtime schema alignment notes, record the keep-and-thread-through decision in the execution log, and mark P1-B analysis tasks complete in the master plan.
2026-04-21 09:08:20 +08:00
Your Name
c5de0220a0
docs(plan): align service authority boundaries
...
Update the supply-api and platform-token-runtime READMEs to reflect the single token authority model, record the changes in the execution log, and mark P1-A-07 and P1-A-08 complete in the master plan.
2026-04-21 09:03:05 +08:00
Your Name
b864a4ef1b
docs(plan): tighten token authority contract
...
Record the OpenAPI vs canonical principal gap, add tenant_id to the introspection response contract, and make the gateway README explicit that non-dev environments must use remote introspection.
2026-04-21 08:01:07 +08:00
Your Name
46152f50fd
docs(plan): record phase1 authority baseline
...
Record the current identity entry points in the execution log and update the minimal token runtime spec with a single authority rule and canonical principal fields. Mark P1-A-01 through P1-A-03 complete in the optimization plan so subsequent batches can continue from the verified baseline.
2026-04-21 07:53:22 +08:00
Your Name
1f56b32257
feat(logging): unify structured startup logs
2026-04-20 19:55:38 +08:00
Your Name
b9b3678fe3
docs(review): finalize remediation closure confirmation
2026-04-20 17:56:47 +08:00
Your Name
b879906fec
test(ci): add supply domain stability rerun check
2026-04-20 16:27:08 +08:00
Your Name
eab029a05c
fix(supply-api): classify handler failures by error type
2026-04-20 16:24:24 +08:00
Your Name
a1555c0127
fix(iam): omit missing grantor foreign key
2026-04-20 16:18:32 +08:00
Your Name
79d9b872f6
fix(iam): write nullable inet fields correctly
2026-04-20 16:16:52 +08:00
Your Name
a109a6836f
fix(iam): tolerate nullable db-backed role fields
2026-04-20 16:14:12 +08:00
Your Name
566169687a
fix(iam): allow wildcard scope in schema seed
2026-04-20 16:11:26 +08:00
Your Name
319d9e1989
fix(supply-api): realign audit event persistence contract
2026-04-20 11:50:20 +08:00