owfadev 0.3.1 → 0.4.0
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/.agents/skills/owfa-check/SKILL.md +49 -0
- package/.agents/skills/{docs → owfa-docs}/SKILL.md +5 -5
- package/.agents/skills/{wiki_plugin_kernel → owfa-kernel}/SKILL.md +13 -12
- package/{.meta/command/plugin → .agents/skills/owfa-plugin}/SKILL.md +10 -10
- package/.agents/skills/{query → owfa-query}/SKILL.md +5 -6
- package/.owfa/VERSION +1 -0
- package/.owfa/command/owfa-check/SKILL.md +49 -0
- package/{.meta/command/docs → .owfa/command/owfa-docs}/SKILL.md +5 -5
- package/{.meta/command/wiki_plugin_kernel → .owfa/command/owfa-kernel}/SKILL.md +13 -12
- package/{.agents/skills/plugin → .owfa/command/owfa-plugin}/SKILL.md +10 -10
- package/{.meta/command/query → .owfa/command/owfa-query}/SKILL.md +5 -6
- package/{.meta → .owfa}/docs/agent-behavior.md +3 -2
- package/{.meta → .owfa}/docs/agents-example.md +1 -1
- package/{.meta → .owfa}/docs/conversion.md +2 -2
- package/{.meta → .owfa}/docs/deployment.md +51 -46
- package/{.meta → .owfa}/docs/developer.md +4 -4
- package/{.meta → .owfa}/docs/distribution.md +21 -19
- package/.owfa/docs/home.md +61 -0
- package/{.meta → .owfa}/docs/intro.md +5 -5
- package/{.meta → .owfa}/docs/log-example.md +1 -1
- package/{.meta → .owfa}/docs/map.md +4 -3
- package/{.meta → .owfa}/docs/mechanics.md +11 -11
- package/{.meta → .owfa}/docs/naming.md +7 -7
- package/{.meta → .owfa}/docs/packages.md +80 -15
- package/.owfa/docs/plugin-lifecycle.md +70 -0
- package/{.meta → .owfa}/docs/quickstart.md +12 -12
- package/{.meta → .owfa}/docs/research-user-profile.md +1 -1
- package/{.meta → .owfa}/docs/sandbox.md +3 -3
- package/{.meta → .owfa}/docs/usage.md +1 -1
- package/{.meta → .owfa}/protocol/actions.md +6 -6
- package/.owfa/protocol/registry.yaml +34 -0
- package/.owfa/scripts/owfa_home.py +273 -0
- package/{.meta/scripts/wiki_plugin_kernel.py → .owfa/scripts/owfa_kernel.py} +521 -77
- package/{.meta → .owfa}/scripts/pipeline.py +9 -9
- package/.owfa/scripts/wiki_plugin_kernel.py +15 -0
- package/{.meta → .owfa}/scripts/wikilib.py +2 -2
- package/.owfa/tests/test_capabilities.py +311 -0
- package/{.meta → .owfa}/tests/test_install_preflight.py +11 -7
- package/.owfa/tests/test_owfa_home.py +127 -0
- package/.owfa/tests/test_version_scheme.py +63 -0
- package/README.md +32 -24
- package/README.zh-CN.md +32 -24
- package/bin/owfa.js +525 -65
- package/package.json +3 -2
- package/payloads/personal/PKG.yaml +15 -0
- package/payloads/personal/README.md +7 -0
- package/{.meta/plugins/core → payloads/personal}/calendar/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/calendar/PLUGIN.yaml +3 -3
- package/{.agents/skills/map → payloads/personal/command/owfa-map}/SKILL.md +9 -9
- package/{.meta/command/profile → payloads/personal/command/owfa-profile}/SKILL.md +11 -11
- package/{.agents/skills/save → payloads/personal/command/owfa-save}/SKILL.md +10 -10
- package/{.meta/plugins/core → payloads/personal}/cron/PLUGIN.md +2 -0
- package/{.meta/plugins/core → payloads/personal}/cron/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/device/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/device/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/domain/PLUGIN.md +2 -0
- package/payloads/personal/domain/PLUGIN.yaml +8 -0
- package/{.meta/plugins/core → payloads/personal}/hot/PLUGIN.yaml +1 -1
- package/{.meta/plugins/core → payloads/personal}/index/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/index/PLUGIN.yaml +4 -4
- package/{.meta/plugins/core → payloads/personal}/instance-git/PLUGIN.md +5 -0
- package/{.meta/plugins/core → payloads/personal}/instance-git/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/language/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/language/PLUGIN.yaml +4 -4
- package/{.meta/plugins/core → payloads/personal}/link/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/link/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/link/scripts/check.py +1 -1
- package/{.meta/plugins/core → payloads/personal}/log/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/log/PLUGIN.yaml +4 -4
- package/{.meta/plugins/core → payloads/personal}/mapping/PLUGIN.yaml +1 -1
- package/{.meta/plugins/core → payloads/personal}/notes/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/notes/PLUGIN.yaml +4 -4
- package/{.meta/plugins/core → payloads/personal}/sessions/PLUGIN.md +2 -1
- package/{.meta/plugins/core → payloads/personal}/sessions/PLUGIN.yaml +5 -5
- package/{.meta/plugins/core → payloads/personal}/structure/PLUGIN.md +2 -0
- package/{.meta/plugins/core → payloads/personal}/structure/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/structure/scripts/check.py +1 -1
- package/{.meta/plugins/core → payloads/personal}/tag/PLUGIN.md +2 -0
- package/{.meta/plugins/core → payloads/personal}/tag/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/tag/scripts/check.py +3 -1
- package/{.meta/plugins/core → payloads/personal}/tmp/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/tmp/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/todo/PLUGIN.md +2 -0
- package/{.meta/plugins/core → payloads/personal}/todo/PLUGIN.yaml +6 -5
- package/payloads/personal/todo/scripts/check.py +51 -0
- package/{.meta/plugins/core → payloads/personal}/trust/PLUGIN.md +1 -0
- package/{.meta/plugins/core → payloads/personal}/trust/PLUGIN.yaml +3 -3
- package/{.meta/plugins/core → payloads/personal}/user-profile/PLUGIN.md +2 -0
- package/{.meta/plugins/core → payloads/personal}/user-profile/PLUGIN.yaml +7 -6
- package/payloads/personal/user-profile/scripts/check.py +20 -0
- package/{.meta/plugins/core → payloads/personal}/vault/PLUGIN.md +1 -0
- package/payloads/personal/vault/PLUGIN.yaml +13 -0
- package/{.meta/plugins/core → payloads/personal}/wiki/PLUGIN.md +1 -0
- package/payloads/personal/wiki/PLUGIN.yaml +8 -0
- package/templates/AGENTS.template.md +2 -2
- package/.agents/skills/check/SKILL.md +0 -130
- package/.agents/skills/profile/SKILL.md +0 -75
- package/.meta/VERSION +0 -1
- package/.meta/command/check/SKILL.md +0 -130
- package/.meta/command/map/SKILL.md +0 -72
- package/.meta/command/save/SKILL.md +0 -94
- package/.meta/plugins/core/domain/PLUGIN.yaml +0 -8
- package/.meta/plugins/core/vault/PLUGIN.yaml +0 -13
- package/.meta/plugins/core/wiki/PLUGIN.yaml +0 -8
- package/.meta/protocol/registry.yaml +0 -75
- /package/{.meta → .owfa}/command/asset-read/SKILL.md +0 -0
- /package/{.meta → .owfa}/docs/research-landscape.md +0 -0
- /package/{.meta → .owfa}/protocol/experiments.md +0 -0
- /package/{.meta/plugins/core → payloads/personal}/device/scripts/check.py +0 -0
- /package/{.meta/plugins/core → payloads/personal}/hot/PLUGIN.md +0 -0
- /package/{.meta/plugins/core → payloads/personal}/instance-git/scripts/check.py +0 -0
- /package/{.meta/plugins/core → payloads/personal}/language/scripts/check.py +0 -0
- /package/{.meta/plugins/core → payloads/personal}/log/scripts/check.py +0 -0
- /package/{.meta/plugins/core → payloads/personal}/mapping/PLUGIN.md +0 -0
- /package/{.meta/plugins/core → payloads/personal}/mapping/scripts/check.py +0 -0
- /package/{.meta/plugins/core → payloads/personal}/sessions/scripts/check.py +0 -0
- /package/{.meta/plugins/core → payloads/personal}/trust/scripts/check.py +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
id: notes
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.16
|
|
4
4
|
bridge: 按需
|
|
5
5
|
depends:
|
|
6
6
|
- wiki
|
|
7
|
-
updated: 2026-
|
|
7
|
+
updated: 2026-11-09
|
|
8
8
|
attachment:
|
|
9
9
|
- "wiki/notes/ — native notes zone"
|
|
10
10
|
fields: {}
|
|
11
11
|
commands:
|
|
12
|
-
- save
|
|
13
|
-
inject: "Native notes `wiki/notes/`: knowledge
|
|
12
|
+
- owfa-save
|
|
13
|
+
inject: "Native notes `wiki/notes/`: knowledge born in the wiki, open `type` vocabulary (defaults in registry); commands append, never modify; session/profile pages live in their own territories; domain derivations must back-link the source; details PLUGIN.md"
|
|
14
14
|
usage:
|
|
15
15
|
- Landing spot `wiki/notes/<title>.md`, file name free (named by humans); type form vocabulary in registry (open, self-extended by instances), territory values do not land in this zone
|
|
16
16
|
- Append-only: commands never rewrite an existing note wholesale; updating = append-style merge under user instruction (trace left in the body) or manual human edits
|
|
@@ -52,8 +52,9 @@ The performance budget for volumetric fog on low-end machines?
|
|
|
52
52
|
|
|
53
53
|
## Changelog
|
|
54
54
|
|
|
55
|
+
- 0.10 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
55
56
|
- 0.9 2026-09-23: added the wiki dependency edge — inner plugins attach to wiki, aligning with the domain 0.1 declaration; missed in the 2026-09-22 domainization batch
|
|
56
|
-
- 0.8 2026-09-13: made the usage sample pointer explicit — added the `.
|
|
57
|
+
- 0.8 2026-09-13: made the usage sample pointer explicit — added the `.owfa/plugins/sessions/PLUGIN.md` path, zero priors
|
|
57
58
|
- 0.7 2026-09-13: inject source moved to the manifest — deleted the Checks, Usage, Inject, Attachments sections; md returns to pure documentation
|
|
58
59
|
- 0.6 2026-09-13: established the Usage section — write-side contracts handed to command injection regions for projection, single text source
|
|
59
60
|
- 0.5 2026-09-12: manifest dropped layer — layering abolished: injection order changed to dependency topology plus alphabetical, direction checks removed
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
id: sessions
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.10
|
|
4
4
|
depends:
|
|
5
5
|
- wiki
|
|
6
|
-
updated: 2026-
|
|
6
|
+
updated: 2026-11-09
|
|
7
7
|
attachment:
|
|
8
8
|
- "wiki/sessions/ — native sessions zone, session-type backbone pages"
|
|
9
9
|
fields:
|
|
10
10
|
participants: "YAML list, actor convention (human:name / process:flow name / agent/model id), the multi-agent collaboration extension point"
|
|
11
11
|
commands:
|
|
12
|
-
- save
|
|
13
|
-
inject: "Native sessions `wiki/sessions/`: session backbone pages (type: session
|
|
12
|
+
- owfa-save
|
|
13
|
+
inject: "Native sessions `wiki/sessions/`: session backbone pages (`type: session`, `participants` required, named YYYY-MM-DD-<topic>); high-value topics promoted to `wiki/notes/` with a back-link; commands append, never modify"
|
|
14
14
|
usage:
|
|
15
15
|
- Landing spot `wiki/sessions/YYYY-MM-DD-<topic>.md` (default naming), type: session, participants required (actor list)
|
|
16
|
-
- Backbone page five-section shape: Core Conclusions / Decisions & Rationale / Non-obvious Insights / Open Questions / Related Pages (full-shape sample in the Example section of `.
|
|
16
|
+
- Backbone page five-section shape: Core Conclusions / Decisions & Rationale / Non-obvious Insights / Open Questions / Related Pages (full-shape sample in the Example section of `.owfa/plugins/sessions/PLUGIN.md`)
|
|
17
17
|
- Standalone high-value topics promoted to `wiki/notes/` pages, the backbone page keeping a wikilink; dedupe before promotion
|
|
18
18
|
checks:
|
|
19
19
|
- Mechanical (covered by audit): session-type pages outside `wiki/sessions/` (or the reverse) → warning; participants missing or entries violating the actor convention → warning
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
|
|
25
25
|
## Changelog
|
|
26
26
|
|
|
27
|
+
- 0.5 2026-11-12: attached-audit fix — declaration keys written without the trailing slash no longer double-report as drift (undeclared + nonexistent); the directory name is the semantics, the slash is form
|
|
28
|
+
- 0.4 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
27
29
|
- 0.3 2026-09-22: domain-ization — the first paragraph gained in-domain governance positioning, transitively belonging to the vault domain, governance page inside and target outside; depends unchanged, transitivity means membership
|
|
28
30
|
- 0.2 2026-09-14: territory moved into wiki — declaration page `wiki/structure.md`, frontmatter structure block mapping machine-readable; drift detection upgraded from a semantic item to the attached-audit script, i.e. the declaration diff; depends gained wiki; the shell's natural-language declaration retired
|
|
29
31
|
- 0.1 2026-09-14: established — from the user-write manuscript, i.e. the four presets plus the AGENTS declaration, distilled with the vault governance discussion; the layout responsibility separated from the vault concept plugin, symmetric to the wiki side's concept-and-structure layering
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
id: structure
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.5
|
|
4
4
|
depends:
|
|
5
5
|
- vault
|
|
6
6
|
- wiki
|
|
7
|
-
updated: 2026-
|
|
7
|
+
updated: 2026-11-12
|
|
8
8
|
attachment:
|
|
9
9
|
- "wiki/structure.md — structure declaration page (the vault layout declaration proper: frontmatter structure block mapping + body preset notes)"
|
|
10
10
|
- "scripts/check.py — attached audit (declaration diff / territory placement / declaration-page existence)"
|
|
11
11
|
fields: {}
|
|
12
|
-
inject: "vault
|
|
12
|
+
inject: "vault layout declaration `wiki/structure.md` (directory → one-line semantics + presets): read it before placing assets and place by position (absent = flat tolerance); sync it after the human reorganizes vault; details PLUGIN.md"
|
|
13
13
|
usage:
|
|
14
14
|
- How to declare: frontmatter `structure` block mapping (key = top-level directory name with trailing slash, value = one-line semantics); the body records preset choices and nesting-rule notes
|
|
15
15
|
- Agent placing assets into vault: read the declaration page first and place by position; with no fitting position, use the flat slot or create a directory then supplement the declaration; if the page is absent, place flat in the root directory
|
|
@@ -24,7 +24,7 @@ def check(ctx):
|
|
|
24
24
|
return issues
|
|
25
25
|
actual = {d + "/" for d in os.listdir(vroot)
|
|
26
26
|
if os.path.isdir(os.path.join(vroot, d)) and not d.startswith(".")}
|
|
27
|
-
declared = {str(k).strip() for k in decl}
|
|
27
|
+
declared = {str(k).strip().rstrip("/") + "/" for k in decl} # the directory name is the semantics; a key without the trailing slash is a form variance, not a drift
|
|
28
28
|
for d in sorted(actual - declared):
|
|
29
29
|
issues.append({"level": "warning", "message": f"vault top-level directory undeclared: {d} (add a declaration or put it in place)"})
|
|
30
30
|
for d in sorted(declared - actual):
|
|
@@ -24,6 +24,8 @@ Owns the `tags` field conventions:
|
|
|
24
24
|
|
|
25
25
|
## Changelog
|
|
26
26
|
|
|
27
|
+
- 0.13 2026-11-12: attached-audit fix — a fully empty tag now reports under the empty-segment rule (previously slipped through: only slash-bearing tags were segmented-checked)
|
|
28
|
+
- 0.12 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
27
29
|
- 0.11 2026-10-04: language neutralization — "Chinese-primary" removed; the primary language follows the language page's default key (absent → session language); hierarchy wording changed to "≤2, `/` separated"; the English kebab-case word-shape rule kept (already neutral); same batch as the language v0.2 follow-up cleanup
|
|
28
30
|
- 0.10 2026-09-23: added the wiki dependency edge — inner-side plugins attach to wiki, aligning with the domain 0.1 declaration; omitted from the 2026-09-22 domain-ization batch
|
|
29
31
|
- 0.9 2026-09-13: checks merged with executors unified as mechanically-confirmed items; expert review: two conflicting tellings versus actions.md
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
id: tag
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.13
|
|
4
4
|
depends:
|
|
5
5
|
- wiki
|
|
6
|
-
updated: 2026-
|
|
6
|
+
updated: 2026-11-12
|
|
7
7
|
attachment:
|
|
8
8
|
- "Cross-cutting plugin: owns the frontmatter tags field across all pages plus vocabulary governance"
|
|
9
9
|
- "scripts/check.py — attached audit (>5 per page / restating type / hierarchy depth)"
|
|
10
10
|
fields:
|
|
11
11
|
tags: "YAML list ≤5; primary language follows the language page's default key (absent → session language); English tags lowercase kebab-case; hierarchy ≤2, `/` separated; restating type forbidden"
|
|
12
|
-
inject: "Page `tags
|
|
12
|
+
inject: "Page `tags`: YAML list, ≤5 per page, hierarchy ≤2 (`/`); language follows the `wiki/language.md` default (absent → session language); English tags lowercase kebab-case; open semantics, never restate `type`"
|
|
13
13
|
usage:
|
|
14
14
|
- Before writing, read `wiki/tags.md` and prefer reusing existing terms
|
|
15
15
|
- New-term conventions: primary language follows the language page's default key (absent → session language, preventing mixed Chinese-English fragmentation of the vocabulary); English lowercase kebab-case; hierarchy ≤2; ≤5 per page; restating type forbidden
|
|
@@ -21,7 +21,9 @@ def check(ctx):
|
|
|
21
21
|
issues.append({"level": "warning", "message": f"{rel}: tag restates type ({ptype})"})
|
|
22
22
|
for t in tags:
|
|
23
23
|
s = str(t)
|
|
24
|
-
if
|
|
24
|
+
if not s.strip():
|
|
25
|
+
issues.append({"level": "warning", "message": f"{rel}: empty tag (no empty segments)"})
|
|
26
|
+
elif "/" in s:
|
|
25
27
|
parts = s.split("/")
|
|
26
28
|
if len(parts) > 2 or any(not p.strip() for p in parts):
|
|
27
29
|
issues.append({"level": "warning", "message": f"{rel}: tag hierarchy over limit or empty segment ({s}, parent/child ≤2)"})
|
|
@@ -23,4 +23,5 @@
|
|
|
23
23
|
|
|
24
24
|
## Changelog
|
|
25
25
|
|
|
26
|
+
- 0.4 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
26
27
|
- 0.3 (2026-10-06) inject line: code formatting restored on the territory path (issue #12 post-migration nit)- 0.2 (2026-10-06) inject line compressed to pointer density (issue #12 layer discipline) — procedural detail lives in usage / PLUGIN.md / skills- 0.1 2026-09-19: established — path-as-territory, invisible to the derived layer, stale_after cleanup prompts, delete upon promotion
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
id: tmp
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.4
|
|
4
4
|
depends:
|
|
5
5
|
- wiki
|
|
6
|
-
updated: 2026-
|
|
6
|
+
updated: 2026-11-09
|
|
7
7
|
attachment:
|
|
8
8
|
- "wiki/tmp/ — temporary zone (the path is the territory; instance data — real contents never enter the framework repo or test-repo)"
|
|
9
9
|
fields: {}
|
|
10
|
-
inject: "Temporary zone `wiki/tmp/` (
|
|
10
|
+
inject: "Temporary zone `wiki/tmp/` (path = territory): drafts and intermediates, no retention promise, invisible to the derived layer; promote precious drafts (draft deleted on promotion); set `stale_after` — deletion only on confirmation; details PLUGIN.md"
|
|
11
11
|
usage:
|
|
12
12
|
- Drafts / parsing scratch: land directly at `wiki/tmp/<name>.md`, frontmatter kept simple (title + optional stale_after); broken links may stay as written
|
|
13
13
|
- Promotion: content distilled via save into notes or merged into the target territory (a project decision section, etc.); delete the draft after the links close (agent-created drafts deleted by the agent; human drafts upon confirmation)
|
|
@@ -28,6 +28,8 @@ A derivation-destination bridge governing action items: domain plugins one-way d
|
|
|
28
28
|
|
|
29
29
|
## Changelog
|
|
30
30
|
|
|
31
|
+
- 0.6 2026-11-12: contract-had-no-enforcement fix — mechanical checks (territory placement / entry trigger + by/at contract / overdue info list) landed as the attached-audit script scripts/check.py, closing the gap between the declared checks and execution
|
|
32
|
+
- 0.5 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
31
33
|
- 0.4 (2026-10-06) inject line compressed to pointer density (issue #12 layer discipline) — procedural detail lives in usage / PLUGIN.md / skills- 0.3 2026-10-02: global-domain batch two — established the on-demand bridge as the derivation destination; domain-plugin self-descriptions retained with a pointer
|
|
32
34
|
- 0.2 2026-10-02: added 'create on absence' — when a new session's first read finds todo.md absent, it creates an empty page, so the entry discipline never falls through; guideline registration entry revised, empirically verified
|
|
33
35
|
- 0.1 2026-09-14: established — the `wiki/todo.md` delegation queue, type: todo entered the registry territory values; settlement history goes to log, the log type value set extended with todo; no attached command — the write contract travels with the injection line
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
id: todo
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.6
|
|
4
4
|
bridge: 按需
|
|
5
5
|
depends:
|
|
6
6
|
- wiki
|
|
7
7
|
- log
|
|
8
|
-
updated: 2026-
|
|
8
|
+
updated: 2026-11-12
|
|
9
9
|
attachment:
|
|
10
10
|
- "wiki/todo.md — temporary memory page (cross-session delegation queue)"
|
|
11
|
+
- "scripts/check.py — attached audit (territory placement / entry contract / overdue list)"
|
|
11
12
|
fields: {}
|
|
12
|
-
inject: "Temporary memory wiki/todo.md
|
|
13
|
+
inject: "Temporary memory `wiki/todo.md`: read first at session start (before hot; absent → create empty), raise due entries; entry = trigger (date/context) + one sentence + by/at; settle with [x] + log line, settled ≤20; details PLUGIN.md"
|
|
13
14
|
usage:
|
|
14
15
|
- Append upon delegation: `- [ ] <date YYYY-MM-DD or context phrase>: one sentence (by: <actor>, at: <date>)`; date entries are mechanically scannable, context entries are semantically activated
|
|
15
16
|
- Read this page first at the start of a new session (before hot; if absent, create an empty page): entries with now ≥ trigger day are proactively raised with the user; overdue and unsettled entries keep being raised, marked overdue
|
|
@@ -17,6 +18,6 @@ usage:
|
|
|
17
18
|
- Cleanup: settled entries capped at 20, silently delete the oldest beyond the cap (log already holds the settlement record, deletion is not an event); valuable content is distilled via save upon completion; this page keeps no history
|
|
18
19
|
- Self-create the page upon first delegation (frontmatter: type: todo + generated), independent of any initialization mechanism
|
|
19
20
|
checks:
|
|
20
|
-
- Mechanical (
|
|
21
|
-
- Mechanical:
|
|
21
|
+
- Mechanical (attached-audit script `scripts/check.py`, executed on audit discovery): entry missing trigger condition or by/at → warning; type: todo landing outside `wiki/todo.md` → error
|
|
22
|
+
- Mechanical (info-level, attached audit): date-triggered, overdue and unsettled entries (the mechanical basis for new-session reminders); page absent (the no-delegation norm)
|
|
22
23
|
- Semantic (check command): open entries > 50 → warning (bloat triage: do what should be done, distill what should be distilled via save, confirm with the user what should be dropped)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""todo plugin attached audit: mechanical items (territory placement / entry contract / overdue list).
|
|
4
|
+
|
|
5
|
+
Entry shape per the manifest: `- [ ] <trigger: date YYYY-MM-DD or context phrase>: one sentence (by: <actor>, at: <date>)`.
|
|
6
|
+
Bloat triage (open entries > 50) is a semantic item, under the check command.
|
|
7
|
+
"""
|
|
8
|
+
import datetime
|
|
9
|
+
import re
|
|
10
|
+
|
|
11
|
+
DATE_RE = re.compile(r"^\d{4}-\d{2}-\d{2}$")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def check(ctx):
|
|
15
|
+
issues = []
|
|
16
|
+
today = datetime.date.today()
|
|
17
|
+
todo_page = None
|
|
18
|
+
for rel, fm, _body in ctx.pages:
|
|
19
|
+
if fm.get("type") == "todo" and rel != "todo.md":
|
|
20
|
+
issues.append({"level": "error", "message": f"{rel}: type: todo outside wiki/todo.md (territory misplacement)"})
|
|
21
|
+
if rel == "todo.md":
|
|
22
|
+
todo_page = _body
|
|
23
|
+
if todo_page is None:
|
|
24
|
+
return issues # page absent = the no-delegation norm, nothing to check
|
|
25
|
+
for i, raw in enumerate(todo_page.splitlines(), 1):
|
|
26
|
+
line = raw.rstrip()
|
|
27
|
+
if not line.startswith("- [ ]"):
|
|
28
|
+
continue # settled entries ([x]) and non-entry lines are out of scope
|
|
29
|
+
rest = line[len("- [ ]"):].strip()
|
|
30
|
+
# strip the trailing (by: …, at: …) parenthetical first, so its colons cannot be mistaken for the trigger separator
|
|
31
|
+
meta = ""
|
|
32
|
+
m = re.search(r"\(([^()]*)\)\s*$", rest)
|
|
33
|
+
if m and ("by:" in m.group(1) or "at:" in m.group(1)):
|
|
34
|
+
meta = m.group(1)
|
|
35
|
+
rest = rest[: m.start()].strip()
|
|
36
|
+
trig, sep, tail = rest.partition(":")
|
|
37
|
+
trig = trig.strip()
|
|
38
|
+
if not sep or not trig:
|
|
39
|
+
issues.append({"level": "warning", "message": f"todo.md:{i}: entry missing trigger condition ({line[:40]}…)"})
|
|
40
|
+
scope = meta or tail
|
|
41
|
+
if not re.search(r"by:\s*\S", scope):
|
|
42
|
+
issues.append({"level": "warning", "message": f"todo.md:{i}: entry missing by ({line[:40]}…)"})
|
|
43
|
+
if not re.search(r"at:\s*\S", scope):
|
|
44
|
+
issues.append({"level": "warning", "message": f"todo.md:{i}: entry missing at ({line[:40]}…)"})
|
|
45
|
+
if trig and sep and DATE_RE.match(trig):
|
|
46
|
+
try:
|
|
47
|
+
if datetime.date.fromisoformat(trig) < today:
|
|
48
|
+
issues.append({"level": "info", "message": f"todo.md:{i}: overdue and unsettled entry ({trig}: {tail[:40]}…)"})
|
|
49
|
+
except ValueError:
|
|
50
|
+
issues.append({"level": "warning", "message": f"todo.md:{i}: trigger date not a real calendar date ({trig})"})
|
|
51
|
+
return issues
|
|
@@ -59,6 +59,7 @@ Field bridge: the trust-field contract shared by all domain plugins across domai
|
|
|
59
59
|
|
|
60
60
|
## Changelog
|
|
61
61
|
|
|
62
|
+
- 0.10 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
62
63
|
- 0.9 2026-10-02: global-domain batch one — established the mandatory bridge, i.e. the field bridge; domain bases must depend on it, kernel verifies completeness
|
|
63
64
|
- 0.8 2026-09-23: added the wiki dependency edge — inner-side plugins attach to wiki, aligning with the domain 0.1 declaration; omitted from the 2026-09-22 domain-ization batch
|
|
64
65
|
- 0.7 2026-09-13: usage gained the verified production channel — reviews are initiated by the user, agents never append spontaneously; expert review: the input channel was idling
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
id: trust
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.10
|
|
4
4
|
bridge: 必依
|
|
5
5
|
depends:
|
|
6
6
|
- wiki
|
|
7
|
-
updated: 2026-
|
|
7
|
+
updated: 2026-11-09
|
|
8
8
|
attachment:
|
|
9
9
|
- "scripts/check.py — attached audit (trust-field contract + stale list + trust-level counts)"
|
|
10
10
|
fields:
|
|
@@ -12,7 +12,7 @@ fields:
|
|
|
12
12
|
verified: "event list, items single-line `by: <actor>, at: <date>`, appendable multiple times; the trust level is derived from this"
|
|
13
13
|
stale_after: "YYYY-MM-DD absolute moment; expiry check = the pure comparison now ≥ stale_after"
|
|
14
14
|
sources: "source list, items contain id / resource / credibility signals (author, usage_count, last_modified)"
|
|
15
|
-
inject: "Trust fields (optional
|
|
15
|
+
inject: "Trust fields (optional): `generated` / `verified` (by+at events) / `stale_after` / `sources`; level is derived, never stored — no record = unverified, agent/process only = machine-confirmed, any human = human-reviewed, past stale_after = stale"
|
|
16
16
|
usage:
|
|
17
17
|
- When writing a page, write `generated` along the way (block style: `by: agent/<current-model>` / `at: <today>`)
|
|
18
18
|
- When a review action happens, append a `verified` event (single line `by: <actor>, at: <date>`), never fabricated to inflate the level
|
|
@@ -33,6 +33,8 @@ The cognition bridge: the global profile's extension point toward domain-level c
|
|
|
33
33
|
|
|
34
34
|
## Changelog
|
|
35
35
|
|
|
36
|
+
- 0.8 2026-11-12: contract-had-no-enforcement fix — mechanical checks (wrong-territory error / page-absent info) landed as the attached-audit script scripts/check.py, closing the gap between the declared checks and execution
|
|
37
|
+
- 0.7 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
36
38
|
- 0.6 (2026-10-06) inject line: sections lost to the kernel comment-strip clip restored (quoted values are now protected), tightened for budget headroom — issue #12 post-migration nit- 0.5 (2026-10-06) inject line compressed to pointer density (issue #12 layer discipline) — procedural detail lives in usage / PLUGIN.md / skills- 0.4 2026-10-02: global-domain batch three — established the cognition bridge, on-demand: the profile body `## Domain Cognition` registration section, aggregate-don't-copy, read-first discipline; bb-track user.md the first registration; the mapping edge removed — under the bridge law it reached domain via the vault chain, causing a global plugin to be misjudged, caught by an actual kernel test; the 'hanging edges are harmless' premise failed
|
|
37
39
|
- 0.3 2026-09-29: profile command established — the write side shed its parasitism on the map and save dual entry points, both commands' consumes entries removed; the evidence domain opened to any page inside wiki, dissolving the cross-domain ownership suspension; first creation self-builds on trigger, absorbing the profile part of the pending initialization items; tags explicitly not applied; depends kept, ruling: reference-level edges retained, not cut
|
|
38
40
|
- 0.2 2026-09-14: usage added the profile distillation methodology — signal criteria, layered placement, assertions concrete and verifiable; the executable part of the distillation entered the write-side contract, closing the SASU-L disclosure loop: an agent running map or save knows how to distill, without relying on model priors; the full text remains in `docs/research-user-profile.md`
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
id: user-profile
|
|
2
2
|
schema_version: 1
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.8
|
|
4
4
|
bridge: 按需
|
|
5
5
|
depends:
|
|
6
6
|
- wiki
|
|
7
7
|
- trust
|
|
8
8
|
- sessions
|
|
9
|
-
updated: 2026-
|
|
9
|
+
updated: 2026-11-12
|
|
10
10
|
attachment:
|
|
11
11
|
- "wiki/profile.md — user profile page (a continuing cognition profile of the user)"
|
|
12
|
+
- "scripts/check.py — attached audit (territory placement / page presence)"
|
|
12
13
|
fields: {}
|
|
13
14
|
commands:
|
|
14
|
-
- profile
|
|
15
|
-
inject: "User profile wiki/profile.md
|
|
15
|
+
- owfa-profile
|
|
16
|
+
inject: "User profile `wiki/profile.md`: continuing cognition of the user (identity + preference layers); read before personalized decisions; write only via the profile command; assertions carry evidence wikilinks, preferences stale_after; details PLUGIN.md"
|
|
16
17
|
usage:
|
|
17
18
|
- Dual-track triggering: the user explicitly invokes profile; the agent calls it spontaneously in any session upon recognizing significant signals — signal distillation uniformly goes through this command, not parasitic on other command flows
|
|
18
19
|
- Signal criteria: self-reported signals (preference expressions, corrections, background) and behavioral signals (subjects, fields, material habits); record only recurring subjects/fields, explicit preference expressions, corrections to output, and stable background facts (identity/tools/environment); one-off and instrumental content and uncertain observations are not recorded
|
|
@@ -26,5 +27,5 @@ usage:
|
|
|
26
27
|
- Cognition bridge registration (a domain-plugin-side action, disclosed on this side): when a domain cognition plugin creates its archive and the profile is present, maintain one line in the profile's `## Domain Cognition` section (domain name + path-form wikilink); if the profile is absent, skip without proxy-creating it (on-demand bridge absence tolerance); multiple courses and archives register via the path-form wildcard (bb: <term>/<course> form)
|
|
27
28
|
checks:
|
|
28
29
|
- Semantic (check command): profile assertion missing an evidence wikilink → warning
|
|
29
|
-
- Mechanical: a type: profile page landing in `wiki/notes/` or `wiki/vault/` (wrong territory) → error
|
|
30
|
-
- Mechanical (info-level): profile page absent (the untriggered norm; profile self-creates on first trigger)
|
|
30
|
+
- Mechanical (attached-audit script `scripts/check.py`, executed on audit discovery): a type: profile page landing in `wiki/notes/` or `wiki/vault/` (wrong territory) → error
|
|
31
|
+
- Mechanical (info-level, attached audit): profile page absent (the untriggered norm; profile self-creates on first trigger)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""user-profile plugin attached audit: mechanical items (territory placement / page presence).
|
|
4
|
+
|
|
5
|
+
Assertion evidence-wikilink grading is a semantic item, under the check command.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def check(ctx):
|
|
10
|
+
issues = []
|
|
11
|
+
present = False
|
|
12
|
+
for rel, fm, _body in ctx.pages:
|
|
13
|
+
if fm.get("type") == "profile":
|
|
14
|
+
if rel.startswith("notes/") or rel.startswith("vault/"):
|
|
15
|
+
issues.append({"level": "error", "message": f"{rel}: type: profile in the wrong territory (single-page territory, wiki/profile.md only)"})
|
|
16
|
+
if rel == "profile.md":
|
|
17
|
+
present = True
|
|
18
|
+
if not present:
|
|
19
|
+
issues.append({"level": "info", "message": "no profile page (the untriggered norm; profile self-creates on first trigger)"})
|
|
20
|
+
return issues
|
|
@@ -20,6 +20,7 @@ No structure or scripts of its own. The external territory is the root-level `va
|
|
|
20
20
|
|
|
21
21
|
## Changelog
|
|
22
22
|
|
|
23
|
+
- 0.7 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
23
24
|
- 0.6 2026-10-02: global-domain batch one — added the trust and log mandatory-bridge edges; vault previously lacked even the trust edge, confirmed by audit; constitution principle 11, kernel verifies completeness
|
|
24
25
|
- 0.5 2026-09-22: domain-ization — depends gained domain, i.e. the default-domain positioning, and wiki, i.e. the territory declaration `wiki/vault/`; the dual role spelled out: doubling as the landing repository for other domains, the url field as the passthrough interface
|
|
25
26
|
- 0.4 2026-09-14: all three governance blocks claimed — source preservation, claiming the registry-reserved field `url`, provenance registration for URL-type assets, the write contract in mapping usage; structure rules moved to the structure plugin established at 0.1; lifecycle and change propagation go to mapping reference counting with recomputation audit trails, in coordination with check triage
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
id: vault
|
|
2
|
+
schema_version: 1
|
|
3
|
+
version: 0.7
|
|
4
|
+
depends:
|
|
5
|
+
- domain
|
|
6
|
+
- wiki
|
|
7
|
+
- trust
|
|
8
|
+
- log
|
|
9
|
+
updated: 2026-11-09
|
|
10
|
+
attachment: []
|
|
11
|
+
fields:
|
|
12
|
+
url: "Source URL; provenance registration for URL-type assets (source preservation), optional for manual placement, required for agent channels (delegate etc.); also the interface for other domains to land via vault"
|
|
13
|
+
inject: "Default domain `vault/` (real assets of any format; landing repository for other domains), wiki-side `wiki/vault/`; commands are append-only toward vault — deleting/modifying belongs to the human; layout per `wiki/structure.md`"
|
|
@@ -28,6 +28,7 @@ Cross-cutting plugins — tag, trust, link — occupy fields and syntax, not pag
|
|
|
28
28
|
|
|
29
29
|
## Changelog
|
|
30
30
|
|
|
31
|
+
- 0.8 2026-11-09: inject line rewritten to routing-pointer density (issue #49 phase 1, relieves the #48 budget): path + read/write trigger + the one easy-to-break invariant + pointer here; the dropped detail already lives in this file / the manifest
|
|
31
32
|
- 0.7 2026-10-02: two territory forms — proxy pages as the default, plus in-domain native pages, i.e. domain-side archives declared by a domain with shape owned by the domain plugin; group-meeting ruling, first case bb-track cognition profile user.md; legitimizes the existing tension of lark and email archive pages, not an exception hatch
|
|
32
33
|
- 0.6 2026-09-29: narrative reinforcement — the origin dichotomy spelled out as three page-origin layers: domain territories, native territory, derived facilities; added cross-cutting plugin positioning; sessions characterized as minutes not mirrors, the source vanishes and the page is the true body
|
|
33
34
|
- 0.5 2026-09-22: domain-ization — the origin dichotomy generalized to "pages each domain declares as its territory", removing the vault-specific hardcoding; territory-to-domain mapping read from path convention, declarations in each domain's manifest; first paragraph rewritten to the inner/outer narrative
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
id: wiki
|
|
2
|
+
schema_version: 1
|
|
3
|
+
version: 0.8
|
|
4
|
+
depends: []
|
|
5
|
+
updated: 2026-11-09
|
|
6
|
+
attachment: []
|
|
7
|
+
fields: {}
|
|
8
|
+
inject: "wiki container `wiki/`: territory pages (domain proxy projections or in-domain native pages), native writings (true body here), derived index/tags/hot/log; frontmatter = top-level scalars, block lists, one-level block mappings only; details PLUGIN.md"
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# {{name}}
|
|
2
2
|
|
|
3
|
-
This is an OWFA workspace — a `vault/` of real assets plus a `wiki/` the agent can re-enter without being re-introduced. `vault/` holds files in any format, `wiki/` holds the markdown pages the agent reads and writes, and `.
|
|
3
|
+
This is an OWFA workspace — a `vault/` of real assets plus a `wiki/` the agent can re-enter without being re-introduced. `vault/` holds files in any format, `wiki/` holds the markdown pages the agent reads and writes, and `.owfa/` + `.agents/skills/` are the framework body. Rewrite this paragraph freely: everything outside the injection region is yours, and the agent never edits it.
|
|
4
4
|
|
|
5
5
|
## Layout
|
|
6
6
|
|
|
7
|
-
`vault/` real assets · `wiki/` the md world · `.
|
|
7
|
+
`vault/` real assets · `wiki/` the md world · `.owfa/` + `.agents/skills/` the framework body (domain packages under `.owfa/plugins/domains/`).
|
|
8
8
|
|
|
9
9
|
## Git
|
|
10
10
|
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: check
|
|
3
|
-
owner: framework
|
|
4
|
-
description: "Audit the repository's health: hard-structure checks on the foundation and plugins + semantic checks on plugins and pages. Triggers on: check, 健康检查, 检查插件, lint."
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# check: repository health audit
|
|
8
|
-
|
|
9
|
-
This is an audit, not a guardrail. It outputs a graded report: error = structural breakage requiring action; warning = a suggested to-do. Check rules come from two places: the foundation part of this file (protocol level) + the injection region below (a mechanical projection by wiki_plugin_kernel from each plugin manifest's checks list; presence means registration).
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
Run one health audit over the entire instance (foundation + plugins + wiki pages).
|
|
14
|
-
|
|
15
|
-
## Scope
|
|
16
|
-
|
|
17
|
-
Read: everything (.meta/, the AGENTS.md injection region, .agents/skills/, the wiki/, vault/ directory trees)
|
|
18
|
-
Write: one line in wiki/log.md (type "check"); regenerable zones are rebuilt directly per the action discipline (scripts: injection region / registry / command copies; semantics: index / tags / hot eviction / log archiving / hash recomputation)
|
|
19
|
-
|
|
20
|
-
## Steps
|
|
21
|
-
|
|
22
|
-
1. **Foundation hard checks** (protocol level):
|
|
23
|
-
- **Static self-check script**: `python .meta/scripts/wiki_plugin_kernel.py validate` (directory completeness, manifest seven fields + optional commands, id consistency, dependency existence, acyclicity, command binding owner×commands bidirectional consistency) — any error means FAIL
|
|
24
|
-
- **Idempotent rebuild**: `python .meta/scripts/wiki_plugin_kernel.py all` (injection region / registry plugin section / command copies — mechanical and automatic; drift is fixed here, the script source is the rule list)
|
|
25
|
-
- `.meta/protocol/registry.yaml` is in place with the protocol / reserved sections intact (the script never touches these two sections; a missing section is an error)
|
|
26
|
-
- **Value-set violation**: scan the frontmatter of all wiki/ pages; a type / status value outside the registry value set → error
|
|
27
|
-
- Every `.meta/command/` SKILL.md has frontmatter (name / description / owner; optional consumes — an ordered list of plugins whose write-side contracts are consumed; referenced plugins must be present with a usage list; mandatory for owner-driven commands)
|
|
28
|
-
2. **Plugin checks**: first run the attached audit `python .meta/scripts/wiki_plugin_kernel.py audit` (mechanical items: each plugin's scripts/check.py executed on audit discovery, read-only reporting; errors count toward FAIL); then execute the items marked "semantic" in the injection-region blocks below
|
|
29
|
-
3. **Semantic checks**: read plugin and command files, looking for dangling references (a command referring to nonexistent structure), ghost fields (page fields with no owning plugin and not registry-reserved), and injection-region blocks inconsistent with the PLUGIN.md Checks section
|
|
30
|
-
4. Summary output: PASS / WARN / FAIL counts + graded details + vault backlog count (informational)
|
|
31
|
-
5. **Fixes are executed by grade per the action discipline** (`.meta/protocol/actions.md`): mechanical-automatic items are done directly — `pipeline.py index` / `tags` (index rebuild), `wiki_plugin_kernel.py all` (registry / injection region / copies), hash recomputation (raw_sha256 of changed frontmatter); hot / log overflows are converged by their own write-pipeline commands; mechanical-confirmation items present a list and ask once; semantic items are reported only; historical entries are never automatically changed
|
|
32
|
-
6. Prepend one line to wiki/log.md (type "check", via `pipeline.py log check "<one line>"`); if anything changed (fixes / a log line), commit per the commit discipline (`检查: <conclusion>`, see `.meta/protocol/actions.md`)
|
|
33
|
-
|
|
34
|
-
## Tools
|
|
35
|
-
|
|
36
|
-
grep / file reading suffice; no second scan when one read is enough (call frugality).
|
|
37
|
-
|
|
38
|
-
## Parameters
|
|
39
|
-
|
|
40
|
-
- None: full-repository audit
|
|
41
|
-
- Plugin id: check that plugin only
|
|
42
|
-
|
|
43
|
-
## Injected Section (plugin check blocks)
|
|
44
|
-
|
|
45
|
-
> This region is a wiki_plugin_kernel projection from each plugin manifest's checks list (rebuilt by `inject` / `all`; presence means registration); handwritten content does not belong here — to change check rules, edit PLUGIN.yaml.
|
|
46
|
-
|
|
47
|
-
<!-- check-inject:start -->
|
|
48
|
-
<!-- check:device -->
|
|
49
|
-
- Mechanical (attached-audit script `scripts/check.py`, executed discovery-style by audit): device block mapping's warranty_until within ≤30 days of today → warning nearing expiry; already expired → warning expired; invalid date → warning
|
|
50
|
-
<!-- /check:device -->
|
|
51
|
-
|
|
52
|
-
<!-- check:hot -->
|
|
53
|
-
- Window out of bounds (>25 entries / >5 days / >200 chars per entry) → run `pipeline.py hot <type> "<backfill>"` once, or wait for the next write to converge naturally then re-check
|
|
54
|
-
- Contradiction with log (log has records while hot shows no trace) → warning
|
|
55
|
-
<!-- /check:hot -->
|
|
56
|
-
|
|
57
|
-
<!-- check:language -->
|
|
58
|
-
- Mechanical (attached-audit script `scripts/check.py`, executed discovery-style by audit): type: language landing outside `wiki/language.md` → error; terms empty values → warning; declaration page absent → info (session-language fallback tolerated)
|
|
59
|
-
<!-- /check:language -->
|
|
60
|
-
|
|
61
|
-
<!-- check:link -->
|
|
62
|
-
- Mechanical items (attached-audit script `scripts/check.py`, executed on audit discovery): broken link (target is neither a page full name nor any page's aliases) → warning; hand-written broken link in hot → warning (not counted as an inbound-link source); garbled link (target contains the U+FFFD replacement character, including related items) → error; alias ambiguity (two pages declaring the same aliases, resolution indeterminate) → error; orphan page (no inbound links and no related references, inbound sources counting concept pages only) → warning for notes knowledge pages, info for territory-value registration pages (registry territory values except session, having no inbound links yet being the registration norm); one-way related (A lists B while B does not list back) → info
|
|
63
|
-
- Semantic items (check command): inbound-link density top list → info item (evidence for hub emergence, no alert)
|
|
64
|
-
<!-- /check:link -->
|
|
65
|
-
|
|
66
|
-
<!-- check:log -->
|
|
67
|
-
- Mechanical items (attached-audit script `scripts/check.py`, executed on audit discovery): undated entries (starting with `- ` yet not matching the date format, main file and archive checked alike) → error
|
|
68
|
-
- Semantic items (check command): historical entries modified (verifiable via git) → error; capacity over the limit → re-check after mechanical archiving
|
|
69
|
-
<!-- /check:log -->
|
|
70
|
-
|
|
71
|
-
<!-- check:notes -->
|
|
72
|
-
- Traces of a note overwritten by a command → error
|
|
73
|
-
- Near-duplicate notes (Jaccard > 0.7) → warning
|
|
74
|
-
<!-- /check:notes -->
|
|
75
|
-
|
|
76
|
-
<!-- check:sessions -->
|
|
77
|
-
- Mechanical (covered by audit): session-type pages outside `wiki/sessions/` (or the reverse) → warning; participants missing or entries violating the actor convention → warning
|
|
78
|
-
- Semantic: backbone page bloated past due promotion (should have been promoted but was not) → warning
|
|
79
|
-
<!-- /check:sessions -->
|
|
80
|
-
|
|
81
|
-
<!-- check:tag -->
|
|
82
|
-
- Mechanical items (attached-audit script `scripts/check.py`, executed on audit discovery): >5 tags on one page → warning; tags restating type → warning; hierarchy over the limit (parent/child ≤2) or empty segment → warning
|
|
83
|
-
- Semantic items (check command): near-duplicate tags → warning suggesting a merge; merging is a mechanically-confirmed item (list presented, executed after user confirmation)
|
|
84
|
-
<!-- /check:tag -->
|
|
85
|
-
|
|
86
|
-
<!-- check:tmp -->
|
|
87
|
-
- Semantic (v0.1 manual, attached audit deferred): type: tmp landing outside wiki/tmp/ → error; stale_after already past → warning (cleanup prompt); tmp page count > 20 → info (backlog triage)
|
|
88
|
-
<!-- /check:tmp -->
|
|
89
|
-
|
|
90
|
-
<!-- check:trust -->
|
|
91
|
-
- Mechanical items (attached-audit script `scripts/check.py`, executed on audit discovery): generated missing by/at or wrong actor format, verified event missing by/at or wrong format, stale_after not YYYY-MM-DD, sources not a list → warning
|
|
92
|
-
- Mechanical items (info level): stale page list (past stale_after); trust-level counts (human-reviewed / machine-confirmed counts)
|
|
93
|
-
- Semantic (check command): stale-page disposition triage (refresh the moment / re-verify / deprecate) — human decides
|
|
94
|
-
<!-- /check:trust -->
|
|
95
|
-
|
|
96
|
-
<!-- check:calendar -->
|
|
97
|
-
- Semantic (v0.1 manual, attached audit deferred): month page file name not YYYY-MM or landing outside wiki/calendar/ → error; traces of rewriting a past month's page → error (git audit); declaration page missing the `calendar` block → info (the manual-only norm)
|
|
98
|
-
<!-- /check:calendar -->
|
|
99
|
-
|
|
100
|
-
<!-- check:cron -->
|
|
101
|
-
- Mechanical: a type: cron page landing outside wiki/cron/ → error; task page missing the cron block or the minimal key set (trigger/action/form/status) → warning; malformed condition trigger (kind outside the open vocabulary or missing target) → warning; time form: last_run beyond the schedule period with active → warning (projection-lost signal)
|
|
102
|
-
- Semantic (attached audit deferred): per-form drift between readable execution-side lists (scheduler / system tasks / conditional-executor watches, best-effort) and the declaration page set → warning; unreadable executor → info
|
|
103
|
-
<!-- /check:cron -->
|
|
104
|
-
|
|
105
|
-
<!-- check:index -->
|
|
106
|
-
- Deviation between indexes and the actual page set (including merged-back indexes pending deletion) → fixed by running `pipeline.py index` to rebuild (idempotent; no diff means consistent); same for tags (`pipeline.py tags`)
|
|
107
|
-
- Traces of hand editing → warning
|
|
108
|
-
<!-- /check:index -->
|
|
109
|
-
|
|
110
|
-
<!-- check:todo -->
|
|
111
|
-
- Mechanical (info-level): the list of date-triggered, overdue and unsettled entries (the mechanical basis for new-session reminders); page absent (the no-delegation norm)
|
|
112
|
-
- Mechanical: entry missing trigger condition or by/at → warning; type: todo landing outside `wiki/todo.md` → error
|
|
113
|
-
- Semantic (check command): open entries > 50 → warning (bloat triage: do what should be done, distill what should be distilled via save, confirm with the user what should be dropped)
|
|
114
|
-
<!-- /check:todo -->
|
|
115
|
-
|
|
116
|
-
<!-- check:user-profile -->
|
|
117
|
-
- Semantic (check command): profile assertion missing an evidence wikilink → warning
|
|
118
|
-
- Mechanical: a type: profile page landing in `wiki/notes/` or `wiki/vault/` (wrong territory) → error
|
|
119
|
-
- Mechanical (info-level): profile page absent (the untriggered norm; profile self-creates on first trigger)
|
|
120
|
-
<!-- /check:user-profile -->
|
|
121
|
-
|
|
122
|
-
<!-- check:mapping -->
|
|
123
|
-
- Mechanical items (attached-audit script `scripts/check.py`, executed on audit discovery): mirror diff (file in vault without proxy → info backlog; proxy without counterpart → error, message carries the reference count — see the impact surface before deleting); missing registration fields (raw_file / raw_sha256) → error; dangling raw_file → error; raw_sha256 mismatch → warning; suspected full-text duplication (md asset body ≥80% of the original) → warning; description-less stub with updated older than 90 days → warning
|
|
124
|
-
- Semantic items (check command): mismatch-disposition triage (description still applies → mechanical recalculation auto-repairs, writing a log line on completion (type map, one sentence with the asset name and 'original changed, description still applies'); suspected invalid → human decides remap or delete); diary-type full-text duplication exemption judgment; before disposing an orphan proxy, handle its references first (update references in sync or leave aliases to redirect)
|
|
125
|
-
<!-- /check:mapping -->
|
|
126
|
-
|
|
127
|
-
<!-- check:structure -->
|
|
128
|
-
- Mechanical items (attached-audit script `scripts/check.py`, executed on audit discovery): declaration diff — vault top-level directory undeclared → warning, declaration key pointing to a nonexistent directory → warning; type: structure landing outside `wiki/structure.md` → error; declaration page absent → info (flat tolerance)
|
|
129
|
-
<!-- /check:structure -->
|
|
130
|
-
<!-- check-inject:end -->
|