sqlite-web 0.7.2
gitea.db
action_run
Create
Query
access
access_token
action
action_artifact
action_run
action_run_index
action_run_job
action_runner
action_runner_token
action_schedule
action_schedule_spec
action_task
action_task_output
action_task_step
action_tasks_version
action_variable
app_state
attachment
auth_token
badge
branch
collaboration
comment
commit_status
commit_status_index
commit_status_summary
commit_sync_log
commit_sync_status
dbfs_data
dbfs_meta
deploy_key
email_address
email_hash
external_login_user
follow
gpg_key
gpg_key_import
hook_task
issue
issue_assignees
issue_content_history
issue_dependency
issue_index
issue_label
issue_pin
issue_user
issue_watch
label
language_stat
lfs_lock
lfs_meta_object
login_source
milestone
mirror
notice
notification
oauth2_application
oauth2_authorization_code
oauth2_grant
org_user
package
package_blob
package_blob_upload
package_cleanup_rule
package_file
package_property
package_version
project
project_board
project_issue
protected_branch
protected_tag
public_key
pull_auto_merge
pull_request
push_mirror
reaction
release
renamed_branch
repo_archiver
repo_hidden_file
repo_indexer_status
repo_license
repo_redirect
repo_topic
repo_transfer
repo_unit
repository
review
review_state
secret
session
sqlite_sequence
star
stopwatch
system_setting
task
team
team_invite
team_repo
team_unit
team_user
topic
tracked_time
two_factor
upload
user
user_badge
user_blocking
user_open_id
user_redirect
user_setting
version
watch
webauthn_credential
webhook
Toggle helper tables
Structure
Content
Query
Insert
Drop
Import
Export
Update row 24171 in action_run
id
Primary key.
INTEGER NOT NULL
title
docs(runbook): 补 §2.1——demo 租户重建的完整应对,含「哪一列」这个会咬人的细节
TEXT
repo_id
INTEGER
owner_id
INTEGER
workflow_id
platform.yml
TEXT
index
INTEGER
trigger_user_id
INTEGER
schedule_id
INTEGER
ref
refs/heads/main
TEXT
commit_sha
73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd
TEXT
is_fork_pull_request
INTEGER
need_approval
INTEGER
approved_by
INTEGER
event
push
TEXT
event_payload
{"ref":"refs/heads/main","before":"45a6bd523973c97e88f31faa12604773150cec87","after":"73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/45a6bd523973c97e88f31faa12604773150cec87...73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd","commits":[{"id":"73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd","message":"docs(runbook): 补 §2.1——demo 租户重建的完整应对,含「哪一列」这个会咬人的细节\n\nidentity 库被清掉(db.sh --fresh / 手工重建 / 从早于 09-16 的 dump 恢复)之后,租户、\n管理员、应用与两个 OIDC 客户端会一起没——它们只在库里,不在任何配置文件里;而管理员\n明文口令全机只有 .secrets/idp-demo-admin.txt 一份(库存散列,备份 dump 里也搜不到明文)。\n\n本节写清四件此前只能靠翻代码才知道的事:两个 bootstrap 各自的一次性约束\n(TENANT_SLUG_CONFLICT / ADMINISTRATION_ALREADY_BOOTSTRAPPED)与「库还在时只能走管理 API」;\n两条 bootstrap 的确切载荷(按 zod schema 核对,password ≥ 12、redirectUri 只收 https 或\nloopback);工作台客户端为什么必须先有人工登录才能登记,且不得给它 idp:manage;以及\n四个 UUID 换新后要同步的四处配置,每处配上漏掉时的具体症状。\n\n其中 PLATFORM_OPS_ADMIN_SUBJECTS 填 users.subject 而不是 users.id——现存 dev 值就是错的,\n见 dev 部署记录 D-13。改 PLATFORM_OPS_* 必须重建容器,只 restart 不带新环境。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:18:51-07:00","added":[],"removed":[],"modified":["docs/runbook.md"]},{"id":"3ed10d6c9473aca115f12b9f32aac435aa79e3ee","message":"docs(部署): 登记 D-13——PLATFORM_OPS_ADMIN_SUBJECTS 的 dev 值填的是 users.id,不是令牌里的 sub\n\n判定链是 token-verifier.ts:136(subject = payload.sub)→ AuthContext.subject →\nplatform-ops.adapter.ts:22(admins.has(auth.subject)),而 IdP 访问令牌的 sub 取自\nusers.subject。当前 dev 配的是该管理员的 users.id(4782bc0d-…),实际 sub 是\ne6783482-…,两者不同——**IdP 签发的管理员令牌打受控执行面会 403 OPS_FORBIDDEN**。\n\nsub 是从 §14 那次真实登录拿到的令牌里解出来的,不是推断。之所以此前没暴露:§5\n「三重守卫齐全 200」的取证用的是手工签发的合成令牌,值自然与白名单对得上;真实 IdP\n令牌这条路是 §14 才第一次走通的。\n\n本轮只登记不改:订正它要动仓外 .secrets 并重建容器,且正向验证需要再走一次人工登录。\n重建 demo 租户时该填哪一列,写在 runbook §2.1。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3ed10d6c9473aca115f12b9f32aac435aa79e3ee","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:18:43-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]},{"id":"91ae21671f2d958ef5e228e525cc931a8e586d40","message":"test(runtime): 补掉覆盖度探针在两个模块查出的 4 条——夹具与单测都没走到\n\ngovernance/fixture-coverage.mjs 落仓后第一次全量扫描(15 个套件)查出的 4 条,全在运行时模块侧:\n\n module-permission ACTION_REQUIRED / RESOURCE_REQUIRED / RESOURCE_ID_REQUIRED\n module-audit AUDIT_COMMIT_MODE_INVALID\n\npermission 的 preflight 已经钉了 tenant / request / trace / actor / scopeVersion 五项(N01–N03),\n唯独「资源三件套」一条用例都没有——那三条守卫删掉,check:fixtures 与模块单测都不会红。\naudit 的 commit 模式同理:mode 不在册时拒绝这条判定此前无人走到。\n\n补:permission 夹具 9 → 10 例(N08,三条原因一条用例同时钉住,门禁要求逐条出现)、\naudit 26 → 27 例(N18,mode=\"best-effort\" 这种看着合理但不在册的取值)。\n模块夹具与 test/negative/*.fixtures.test.ts 同源——单测 it.each 直接遍历夹具文件,所以加夹具用例\n即同时加单测,本次没有另写测试代码。\n\npermission 的夹具是 prettier 按宽度折行的混合风格,JSON round-trip 会把整份重排成 180 行噪音;\n改用文本插入,diff 保持 +8/-1。\n\n负向实测:把 N08 的声明原因改成不会产生的串 → 门禁 exit 1 并点名该例,恢复后转绿。\n\n补后 15 个套件的「夹具与单测都没有」全为 0,CLAUDE.md 同步改口。\n\n证据:module-permission 50/50、module-audit 81/81(vitest 无库单测);\ncheck:fixtures 两套件 37/37;fixture-coverage 全量 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/91ae21671f2d958ef5e228e525cc931a8e586d40","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:18:36-07:00","added":[],"removed":[],"modified":["CLAUDE.md","runtime/modules/audit/test/fixtures/audit.fixtures.json","runtime/modules/permission/test/fixtures/permission.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd","message":"docs(runbook): 补 §2.1——demo 租户重建的完整应对,含「哪一列」这个会咬人的细节\n\nidentity 库被清掉(db.sh --fresh / 手工重建 / 从早于 09-16 的 dump 恢复)之后,租户、\n管理员、应用与两个 OIDC 客户端会一起没——它们只在库里,不在任何配置文件里;而管理员\n明文口令全机只有 .secrets/idp-demo-admin.txt 一份(库存散列,备份 dump 里也搜不到明文)。\n\n本节写清四件此前只能靠翻代码才知道的事:两个 bootstrap 各自的一次性约束\n(TENANT_SLUG_CONFLICT / ADMINISTRATION_ALREADY_BOOTSTRAPPED)与「库还在时只能走管理 API」;\n两条 bootstrap 的确切载荷(按 zod schema 核对,password ≥ 12、redirectUri 只收 https 或\nloopback);工作台客户端为什么必须先有人工登录才能登记,且不得给它 idp:manage;以及\n四个 UUID 换新后要同步的四处配置,每处配上漏掉时的具体症状。\n\n其中 PLATFORM_OPS_ADMIN_SUBJECTS 填 users.subject 而不是 users.id——现存 dev 值就是错的,\n见 dev 部署记录 D-13。改 PLATFORM_OPS_* 必须重建容器,只 restart 不带新环境。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/73d03c062f82dc9e8b9a0e66e6e973ca9aca54cd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:18:51-07:00","added":[],"removed":[],"modified":["docs/runbook.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":20594,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":44,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-19T07:17:37+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}
TEXT
trigger_event
push
TEXT
status
INTEGER
version
INTEGER (default 0
started
INTEGER
stopped
INTEGER
previous_duration
INTEGER
created
INTEGER
updated
INTEGER
raw_concurrency
group: platform-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }}
TEXT
concurrency_group
platform-platform.yml-refs/heads/main
TEXT NOT NULL (default ''
concurrency_cancel
INTEGER NOT NULL (default FALSE
Update
Cancel