weichen
e310f06504
docs(ops): register system-admin-console task and claim
2026-09-17 06:57:13 +00:00
weichen
0eaca61545
feat(web): full-screen system admin console, absorb AdminSettingsModal
...
- top-level view switch workbench|admin in App.tsx (no router; hash #turn
anchors untouched)
- new admin/console/AdminConsoleView with left group nav in the existing
token/inline-style idiom, plus 8 self-fetching sections: overview, kb,
features, settings, workflows, roles, users, docs
- absorb the six AdminSettingsModal tabs into sections and delete the modal
- new api/systemAdmin.ts + types for /api/v1/admin/system/* endpoints
- playwright smoke spec web/e2e/admin-console.spec.ts (skip by default)
2026-09-17 06:57:03 +00:00
weichen
f1404d5bd2
feat(sysadmin): add system admin aggregation API and system_settings store
...
- new internal/sysadmin package (overview/kb/features/settings) with small
port interfaces; business packages stay unaware of sysadmin
- new routes /api/v1/admin/system/{overview,kb,features,settings} guarded
by requireSystemAdmin
- goose 00049: system_settings table (key/jsonb value, updated_by/at)
- SettingSpec whitelist registry with DB > env > default precedence
- register sysadmin in module-boundaries.yaml (archtest rules)
2026-09-17 06:56:46 +00:00
weichen
173a512c28
merge: docs/promote-null-fk-to-test-closeout
2026-09-17 06:20:40 +00:00
weichen and Cursor
ef5f0fdef9
docs(ops): close null-fk promote to test at rc-v1.0.0-beta.4
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:20:40 +00:00
weichen
7f0f8a1ca2
merge: feature/promote-null-fk-to-test
2026-09-17 06:19:57 +00:00
weichen and Cursor
fa8598e89b
docs(ops): occupy slot to promote optional-duty null FK into test
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:19:57 +00:00
weichen
e78b6c1470
merge: docs/docgov-optional-duty-null-fk-report
2026-09-17 06:12:56 +00:00
weichen and Cursor
c9fd8a4d7f
docs(test): archive optional-duty null FK fix report and close task
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:12:56 +00:00
weichen
e488d10840
merge: fix/docgov-optional-duty-null-fk
2026-09-17 06:08:52 +00:00
weichen and Cursor
4606119581
docs(ops): occupy integration slot for optional-duty null FK smoke
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:08:52 +00:00
weichen and Cursor
149dec8993
docs(ops): claim and audit docgov optional-duty null FK fix
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:08:35 +00:00
weichen and Cursor
fa2407f92c
fix(stream): classify document ledger FK failures as DOC_LEDGER_ERROR
...
Avoid masking persist document ledger / 23503 errors as INTERNAL_ERROR.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:08:35 +00:00
weichen and Cursor
c2efcdbacd
fix(docgov): map zero duty ids to NULL on CreateOrGetDocument
...
Optional reviewer/approver duties leave UserID=0; writing 0 into
document_records FK columns failed with SQLSTATE 23503. Align create
path with docduty nullIfZero and surface ensureUser failures in logs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 06:08:35 +00:00
weichen
feefc322a7
merge: feature/promote-dev-to-test-closeout
CI / go-vet-and-short-test (push) Failing after 0s
CI / backup-restore-drill (push) Failing after 1s
CI / web (push) Failing after 0s
2026-09-17 05:05:26 +00:00
weichen and Cursor
3978e6b461
docs(ops): record test promotion to rc-v1.0.0-beta.3
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 05:05:26 +00:00
weichen
4fce16c91b
merge: feature/promote-dev-to-test-2026-09-17
2026-09-17 05:03:04 +00:00
weichen and Cursor
151953a520
docs(ops): occupy slot to promote local dev into test
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 05:03:04 +00:00
weichen
46a0fb2d5a
merge: feature/w7-d7-data-inventory
2026-09-17 04:58:52 +00:00
weichen and Cursor
dbc9b73278
docs(ops): record W7 D7 chat data inventory without deletion
...
Keep the D7 matrix row deferred until compliance signoff; no gap-matrix blocker.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 04:58:52 +00:00
weichen
cb4fbb69a6
merge: feature/w6-fav-subscriber-shadow
2026-09-17 04:26:18 +00:00
weichen and Cursor
58c04ff6c5
docs(ops): close W6 FAV shadow and release integration slot
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 04:26:18 +00:00
weichen and Cursor
9c0954ba6e
docs(ops): record W6 FAV subscriber shadow evidence
...
Keep the FAV matrix row partial because live staging was not opened.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 04:25:17 +00:00
weichen and Cursor
2c1d040ccf
feat(events): add FAV subscriber shadow without live writes
...
ObserveShadow computes intended outcome only and refuses FAV_DEGRADED_READ; HandleLease and Register(fav) stay fail-closed.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 04:25:17 +00:00
weichen
49d901e964
merge: feature/w5a-software-bootstrap-ui-pi
2026-09-17 04:12:38 +00:00
weichen and Cursor
7c1ae7ec38
docs(ops): close W5a and release integration slot
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 04:12:38 +00:00
weichen and Cursor
eee42d1d16
feat(workflow-design): catalog-driven software create wizard and docs_only PI
...
Software projects mount only bootstrap/delivery keys and skip the medical
seven-template clone. SWBOOT-10 stays a fail-closed stub.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 04:11:03 +00:00
weichen
f5a80fd653
merge: feature/w4-u9-segment-live
2026-09-17 03:15:35 +00:00
weichen and Cursor
1c1a4bb683
docs(ops): close W4 U9–U12 and release integration slot
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 03:15:35 +00:00
weichen and Cursor
43555e5d08
feat(intent-plan): wire U9 PI segment proposer and per-flag U10–U12 evidence
...
Rules that already split skip the LLM. Independent flags stay off by
default and do not raise MULTI_INTENT_PLAN_TIER.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 03:14:57 +00:00
weichen
9ac1eb178e
merge: feature/w3-pi-change-report-narrative-live
2026-09-17 03:03:20 +00:00
weichen and Cursor
2ba6b3ec74
docs(ops): close W3 narrative live and release integration slot
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 03:03:20 +00:00
weichen and Cursor
47a740a9c4
feat(docgov): wire no-tool PI change-report narrative
...
Flag-on CreateAgentCandidate asks the product PI runner for
change_report_narrative_v1 after the real digest is known; timeout
and malformed payloads stay full fallback. Default flag remains off.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 03:02:11 +00:00
weichen
0bc98c6da4
merge: feature/w2-semantic-summary-shadow-live
2026-09-17 02:51:55 +00:00
weichen and Cursor
886449958f
feat(chat): wire no-tool PI semantic summary shadow
...
Enable SEMANTIC_SUMMARY_SHADOW to call the product PI runner on authorized messages only, keep REPLACE unwired, and record MiniMax evidence for the D3 matrix close.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:51:55 +00:00
weichen
982dc48345
merge: chore/leftover-hygiene-2026-09-17
2026-09-17 02:43:44 +00:00
weichen and Cursor
4b509efefc
docs(ops): align leftover branches and contracts with local dev
...
Prune merged worktrees/refs and correct SWBOOT/PU scaffolding docs so W2–W7 start from git truth, without merging frozen FAV/herdr/project143 branches.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:43:44 +00:00
weichen
80ef2f61a0
merge: docs/archive-kb-host-auth-short-term
2026-09-17 02:06:19 +00:00
weichen and Cursor
f2c2e34f0b
docs(ops): archive completed kb-host-auth short-term task
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:06:19 +00:00
weichen
392b3bc1c9
merge: docs close kb-host-auth
2026-09-17 02:06:09 +00:00
weichen and Cursor
6f52896dad
docs(ops): close kb-host-auth task and release integration slot
...
Record rebuild smoke: kb_ready=true and redacted online DSN in container.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:06:09 +00:00
weichen
5182da20ed
merge: fix/kb-host-auth-layered-load (no Fatalf)
2026-09-17 02:04:51 +00:00
weichen and Cursor
6fa933ac27
fix(kb): return offline client instead of Fatalf under require-online
...
Library must not abort the process; E2E callers use EnsureOnline/t.Fatal
so ambient RUN_PI_E2E no longer kills short server tests.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:04:51 +00:00
weichen
cdd3f8c559
merge: fix/kb-host-auth-layered-load
2026-09-17 02:03:21 +00:00
weichen and Cursor
abbb461780
docs(ops): claim integration slot for kb-host-auth merge
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:03:21 +00:00
weichen and Cursor
c977e8247a
docs(test): record KB host-auth layered load fix and acceptance
...
Short-term task, CURRENT claim, and unit/live boolean test report.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:03:07 +00:00
weichen and Cursor
e782400736
fix(api): expose kb_ready and gate E2E/nightly on shared KB
...
Health reports kb_ready; PI E2E uses layered Load + require-online;
nightly preflights SELECT 1 before product suite.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:03:07 +00:00
weichen and Cursor
f3ed57c41f
fix(kb): redact DSN logs and fail closed when KB must be online
...
Add Online(), honor KB_REQUIRE_ONLINE/RUN_PI_E2E unless KB_ALLOW_OFFLINE,
and refuse empty/wrong credentials without leaking secrets in logs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:03:07 +00:00
weichen and Cursor
cdbf9cab63
fix(config): layer root .env over configs/.env.{ENV} for KB auth
...
Stop using a fake default KB password; merge Compose-style env files and
rewrite compose DNS to localhost on the host so go test/E2E authenticate.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 02:03:07 +00:00
weichen
e694408851
merge: docs/w1-release-integration-slot
2026-09-17 01:48:19 +00:00
weichen and Cursor
cacbf755b6
docs(ops): release integration slot after W1 merge smoke
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 01:48:19 +00:00
weichen
1d075aa4c3
merge: fix/w1-archtest-app-fav-allowlist
2026-09-17 01:47:52 +00:00
weichen and Cursor
86a4c9af63
fix(arch): allowlist app/fav imports for archtest baseline
...
FAV U7 stub package was missing from module-boundaries imports map,
breaking go test -short smoke after W1 merge.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 01:47:52 +00:00
weichen
4d6b95dea4
merge: feature/w1-ci-e2e-green-nightly
2026-09-17 01:44:02 +00:00
weichen and Cursor
8d3fd089f2
docs(ops): mark W1 step complete on partial-deferred controller
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 01:44:02 +00:00
weichen and Cursor
6981223087
docs(test): close W1 CI/E2E with FullNone nightly pass receipt
...
Archive green receipt 6e2476f0 , raise FEATURE-MATRIX CI/E2E to done,
and mark short-term/CURRENT W1 complete.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 01:43:54 +00:00
weichen and Cursor
6e2476f0f2
fix(ci): retry nightly suite on MISSING_TARGET flakes
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 01:12:37 +00:00
weichen and Cursor
11e030db30
fix(squad): stop requiring fields.json as hard PI runner target
...
Organizer still prompts for fields.json, but missing it must not fail
closed as MISSING_TARGET when output.md is present (FullNone flake).
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 00:55:11 +00:00
weichen and Cursor
0f52ab89db
fix(ci): load real KB password for host-side PI E2E
...
configs/.env.dev omits KB_DB_PASSWORD so Load kept the default
shared_kb_secret_pass; fall back to root .env so research can use KB.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 00:52:01 +00:00
weichen and Cursor
a02c67db82
fix(ci): stabilize FullNone PI E2E timeouts and host KB DNS
...
Raise HTTP client timeout above AgentTimeout, rewrite compose KB host
to localhost for host-side tests, and retry nightly on deadline flakes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-17 00:28:38 +00:00
weichen and Cursor
4f2e5f013f
fix(db): remove duplicate goose 00048 software-project-type migration
...
Two 00048 files made goose panic on CollectMigrations, blocking all
TEST_DATABASE_URL PG suites including FullNone and nightly.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 23:37:04 +00:00
weichen
4bda6484a2
merge: docs/partial-deferred-completion-plan
2026-09-16 23:34:16 +00:00
weichen and Cursor
251b5f9c3d
docs(ops): claim integration slot for docs closeout merge and W1
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 23:34:16 +00:00
weichen and Cursor
c649067d19
docs(remediation): freeze §7 open decisions for partial/deferred closeout
...
Confirm D7 retention draft ADR, confirm-tier gate, REPLACE default-off,
and FAV live order with observation windows; sync CURRENT and short-term.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 16:13:17 +00:00
weichen
bb8d921e7c
docs(remediation): add partial/deferred completion plan (W1-W7) and short-term controller
2026-09-16 16:03:50 +00:00
weichen and Cursor
83f9004f9e
docs(ops): close SWBOOT short-term after remote push
...
CI / go-vet-and-short-test (push) Failing after 1s
CI / backup-restore-drill (push) Failing after 0s
CI / web (push) Failing after 0s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:49:21 +00:00
weichen and Cursor
92e0ae7ec4
merge: origin/feature/intent-plan-cards-playwright
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:49:21 +00:00
weichen and Cursor
49db87ebe5
docs(ops): release integration slot after agent-delta merge
...
CI / go-vet-and-short-test (push) Failing after 1s
CI / backup-restore-drill (push) Failing after 0s
CI / web (push) Failing after 0s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:48:24 +00:00
weichen and Cursor
51c8ec1e8a
docs(ops): mark P0–P7 agent-delta merge complete on SSOT
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:48:07 +00:00
weichen and Cursor
768729d85e
fix(swboot): drop thin allowlist stub after agent SWBOOT merge
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:57 +00:00
weichen and Cursor
f0029dffed
merge: origin/feature/software-project-bootstrap
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:45 +00:00
weichen and Cursor
00cc5b6645
merge: origin/feature/fav-u7-publisher
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:29 +00:00
weichen and Cursor
131380e858
merge: origin/feature/pu8-u9-u12-flags
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:23 +00:00
weichen and Cursor
b92e226497
fix(docgov): drop thin pi_narrative stub after agent PU7 merge
...
Use ResolveChangeReport from feature/pu7-pi-narrative.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:16 +00:00
weichen and Cursor
a380c218bb
merge: origin/feature/pu7-pi-narrative
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:06 +00:00
weichen and Cursor
f3351ce750
fix(chat): drop thin semantic_shadow stub after agent PU6 merge
...
Keep applySemanticShadow path from feature/pu6-semantic-summary.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:46:01 +00:00
weichen and Cursor
f55887e2a2
docs(test): archive intent-plan Playwright dual-tab report
...
Record RUN_UI_ACCEPTANCE live PASS evidence and close the dual-tab short-term.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:45:50 +00:00
weichen and Cursor
b74b9ab1d0
test(web): add intent-plan dual-tab Playwright acceptance
...
Gate on RUN_UI_ACCEPTANCE=1; seed awaiting PG plan via SQL without raising
MULTI_INTENT_PLAN_TIER; assert one confirm wins and reload/relogin match PG.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:45:50 +00:00
weichen and Cursor
cc8557b8c6
feat(web): hydrate PLAN_CONFIRM from active intent plan
...
Load GET /intent-plans/active into a live card on session restore, use a
unique decision nonce per confirm click, and keep an empty-docAST fallback
so login still renders when demo seeds are off.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:45:50 +00:00
weichen and Cursor
003bc7a5b9
merge: origin/feature/pu6-semantic-summary
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:45:45 +00:00
weichen and Cursor
b5ce947e77
docs(ops): mark SWBOOT-00..09 feature slice done after push
...
Record remote branch tip and release workflow-design mutex; still not
merged to dev.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:45:34 +00:00
weichen and Cursor
01a783b8d5
test(swboot): SWBOOT-09 L1 suite and acceptance report
...
Update catalog size expectations to five workflows and archive the
unit-test report; sync FEATURE-MATRIX and task docs without merging to
dev.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:45:08 +00:00
weichen and Cursor
6aea8784c2
docs(test): record nightly run#30 U8 PASS after DATA_DIR rw fix
...
CI / go-vet-and-short-test (push) Failing after 0s
CI / backup-restore-drill (push) Failing after 1s
CI / web (push) Failing after 0s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:44:56 +00:00
weichen and Cursor
f6034fad37
feat(api): SWBOOT-05..08 wizard hooks and SWBOOT-10 allowlist stub
...
Add project-types/compliance catalogs, creation-preview, software create
fields, and fail-closed repo allowlist stub without real patch/merge.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:43:13 +00:00
weichen and Cursor
6087d0bdef
docs(test): archive PU8 U9–U12 flags scaffolding report
...
Record default-off flag gates, unit evidence, and FEATURE-MATRIX partial status.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:42:49 +00:00
weichen and Cursor
0611b1f24f
feat(intentflow): wire U9–U12 ports and gated OwnerMux
...
Register dry-run adapters via BuildOwnerMux when independent flags are on;
U9 stub fail-closes on malformed/timeout/out-of-bounds without raising PlanTier.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:42:49 +00:00
weichen and Cursor
d860c6430e
docs(ops): close full-backlog override checklist P1–P7
...
CI / go-vet-and-short-test (push) Failing after 0s
CI / backup-restore-drill (push) Failing after 0s
CI / web (push) Failing after 0s
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:41:30 +00:00
weichen and Cursor
b015f8723f
fix(docgov): keep invalid ReportJSON path when narrative flag off
...
Preserve prior ValidateChangeReportJSON error semantics.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:41:30 +00:00
weichen and Cursor
2b3302ece4
feat(workflow-design): SWBOOT ADR, project_type migration, patch deny stub
...
SWBOOT-10 remains stub-only pending secondary approval.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:56 +00:00
weichen
f1d8f49df7
merge: feature/fav-u7-publisher-impl
2026-09-16 15:40:56 +00:00
weichen
0409e399d8
merge: feature/intent-plan-cards-playwright-impl
2026-09-16 15:40:56 +00:00
weichen
975af54fd6
merge: feature/pu8-u9-u12-flags-impl
2026-09-16 15:40:56 +00:00
weichen
5596ead7fd
merge: feature/pu7-pi-narrative-impl
2026-09-16 15:40:55 +00:00
weichen
7583f109a1
merge: feature/pu6-semantic-summary-impl
2026-09-16 15:40:55 +00:00
weichen and Cursor
6356fb5a8c
docs(ops): mark FAV U7 incremental push complete
...
Feature branch pushed; still not merged to dev; fav subscriber remains OFF.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:38 +00:00
weichen and Cursor
1cd1cddf64
feat(intent-plan): independent PU8 U9–U12 flags default off
...
Dry-run/fail-closed adapters; does not raise plan tier.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:26 +00:00
weichen and Cursor
47376aeb84
feat(events): FAV publisher cmd stub gated off by default
...
Incremental U7; degraded read still approval-gated.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:26 +00:00
weichen and Cursor
d45a1eef75
test(web): intent-plan dual-tab Playwright acceptance gate
...
RUN_UI_ACCEPTANCE=1 required; no tier upgrade.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:26 +00:00
weichen and Cursor
e7e981356c
feat(docgov): PI_CHANGE_REPORT_NARRATIVE gate with full fallback
...
Default off; malformed or risk downgrade forces deterministic report.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:25 +00:00
weichen and Cursor
8fdf50ab2a
feat(chat): SEMANTIC_SUMMARY_SHADOW optional deterministic annotate
...
Default off; unauthorized views skipped; facts preserved.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-16 15:40:25 +00:00