@h1v35/hivex 0.2.2 → 0.3.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.
@@ -1,24 +1,24 @@
1
- # Optional Markdown convention
1
+ # Recommended Markdown foundation
2
2
 
3
- Use the project's existing Markdown as it is. Hivex must not require this convention, frontmatter, numbered ADRs or a particular directory structure. Recommend these practices when adopting Hivex or writing documentation, without repeatedly proposing a migration of an established project.
3
+ Use this foundation when adopting Hivex. Prefer migration to its standard structure when reasonably possible, preserving and completing useful existing documents, their authority, history and links. Hivex's knowledge reader continues to accept other Markdown layouts; document organization is not an ingestion prerequisite.
4
4
 
5
- These practices draw on established authority-map and documentation-layout patterns and the domain-modeling skill. They preserve useful documentation discipline without prescribing retired machinery from any one project.
5
+ The foundation combines a clear authority map, project purpose, domain language and maintainable decisions. The bundled documentation skill guides adoption and completion; no retired planning framework or external skill set is required.
6
6
 
7
7
  ## Give knowledge one authoritative home
8
8
 
9
- Keep shared decisions at project or monorepo level. Package-specific or module-specific knowledge can stay with that package or module. Link shared rules instead of copying them into each area. Folders and files appear only when there is useful content to put in them.
9
+ Keep shared decisions at project or monorepo level. Package-specific or module-specific knowledge can stay with that package or module. Link shared rules instead of copying them into each area. Initialization prepares the core documents and directories. Complete project-specific drafts from evidence and the owner, and add further documents only for useful distinct purposes.
10
10
 
11
11
  A useful catalogue distinguishes:
12
12
 
13
13
  - An authority map explaining where each kind of knowledge belongs.
14
+ - A PRD recording purpose, problem, vision, users and scope.
14
15
  - A domain glossary defining the project's terms, with avoided synonyms where useful.
15
16
  - Decisions and their reasons, often kept as ADRs.
16
17
  - Guidelines containing design invariants and lessons worth applying again.
17
- - Process documents explaining the working method.
18
18
  - Procedures for concrete operational or recovery tasks.
19
19
  - Research and evidence identified as dated support, not automatically current decisions.
20
20
 
21
- For example, a project may use `docs/README.md`, `docs/CONTEXT.md`, `docs/adr/`, `docs/guidelines/`, `docs/procedures/` and `docs/research/`. Keep standing rules and design guidance in `guidelines`, and instructions for carrying out tasks in `procedures`; avoid overlapping directories with indistinct purposes. These are examples, not required paths. Multiple bounded contexts may have their own glossary and decisions with a small context map linking them; a monorepo need not duplicate one shared product glossary.
21
+ For example, a project may use `docs/README.md`, `docs/CONTEXT.md`, `docs/adr/`, `docs/guidelines/`, `docs/procedures/` and `docs/research/`. Keep standing rules and design guidance in `guidelines`, and instructions for carrying out tasks in `procedures`; avoid overlapping directories with indistinct purposes. These are the adoption defaults; an existing project may retain another arrangement where migration would not be appropriate. Multiple bounded contexts may have their own glossary and decisions with a small context map linking them; a monorepo need not duplicate one shared product glossary.
22
22
 
23
23
  ## Write decisions for the next reader
24
24
 
@@ -40,10 +40,16 @@ Use an ADR when the choice is consequential, reflects a real trade-off and would
40
40
 
41
41
  When replaced text obscures a decision's current meaning, preserve that history in a clearly marked Markdown archive and keep the active document focused on applicable rules, reasons, dependencies and exceptions. A wholly superseded ADR can remain as a short pointer to its replacement and archive. Preserve referenced anchors or update their links. Do not archive a live exception merely because it is old, or change what an earlier decision meant while shortening its current presentation.
42
42
 
43
- A project may use `docs/archive/adr/` for this purpose; other layouts remain valid. Historical evidence should be available for focused consultation without being loaded into every model context. Declare its relative globs in `hivex.json` under `history`, then use the installed CLI's `--source` selection or a known relationship for bounded retrieval. Compaction must not silently make necessary evidence inaccessible. The human or implementing agent maintains these documents; Hivex does not rewrite or move the sources.
43
+ A project may use `docs/archive/adr/` for this purpose; other layouts remain valid. Historical evidence should be available for focused consultation without being loaded into every model context. Declare its relative globs in `hivex.json` under `history`, then use the installed CLI's `--source` selection or a known relationship for bounded retrieval. Compaction must not silently make necessary evidence inaccessible. The principal agent maintains and migrates the documents. The CLI prepares missing foundation files and explicitly relocates derived graph references; it does not decide new product doctrine or silently rename existing sources.
44
44
 
45
45
  ## Keep the glossary focused
46
46
 
47
47
  Define each project-specific concept briefly and use that term consistently. A glossary explains what a concept is; it is not an implementation manual, task plan or collection of general programming terms. Group related concepts when it helps and link context-specific definitions instead of copying.
48
48
 
49
49
  Code and executable contracts explain mechanics. Markdown preserves the intent, constraints, decisions and reasons that code cannot explain. Update that knowledge alongside the change rather than leaving the only explanation in a conversation or private agent memory.
50
+
51
+ ## Keep the agent entrypoint small
52
+
53
+ Use a short `AGENTS.md` with orientation and knowledge pointers, development/verification guidance and project-specific constraints only where needed. Link the relevant authority with enough context to know when it matters. Do not duplicate the PRD, glossary or guidelines, or require every document on every task.
54
+
55
+ The public [AGENTS.md convention](https://agents.md/) is ordinary Markdown without required fields. The foundation supplies a consistent starting shape rather than another schema or a line-count gate.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: hivex-design
3
+ description: Resolve open product or architectural decisions, investigate uncertainty, and shape work into a useful specification or execution slices. Use for planning, a grill, design tradeoffs, focused research, or prototypes that answer a question.
4
+ ---
5
+
6
+ # Design useful work
7
+
8
+ Recover the request, existing decisions and relevant project vocabulary first. Use the project's Markdown and Hivex's local retrieval. Inspect facts available in the repository or authoritative sources instead of asking the owner to rediscover them.
9
+
10
+ If the task is already defined, carry that scope into implementation. Do not start an interview or create planning artifacts merely to satisfy a pipeline.
11
+
12
+ ## Resolve what is open
13
+
14
+ For a grill, ask one meaningful question at a time, explain the practical tradeoff and give a recommendation. Follow dependencies between decisions and wait for the owner's answer. Reuse prior answers. Close the shared understanding before implementing a design the owner is still deciding.
15
+
16
+ Research a factual uncertainty using relevant primary sources. Build a small disposable prototype when seeing or exercising a behavior is the cheapest way to resolve a question. Keep either activity bounded to the decision it serves; preserve the useful conclusion and its evidence.
17
+
18
+ Use the project's language and domain responsibilities. Prefer a small interface that hides meaningful internal complexity. Respect established architecture and identify concrete tradeoffs before introducing another abstraction.
19
+
20
+ ## Make execution clear
21
+
22
+ Capture the intended outcome, scope, useful acceptance evidence and unresolved decisions at the level the change needs. Reuse an existing issue or spec when it already owns the work. Create extra execution tickets only for independently verifiable slices or dependencies that help coordination.
23
+
24
+ A cross-layer feature slice should deliver a meaningful result. A mechanical refactor may need a different sequence; choose it from the actual affected code rather than forcing a template. Do not require exhaustive user stories, a decision-map hierarchy or one ticket per agent session.
25
+
26
+ Record durable decisions through the project's documentation practice, using `hivex-document` when maintaining that knowledge. Use `hivex-git` for tracker publication within the owner's authorization.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: hivex-document
3
+ description: Establish or maintain project purpose, domain language, decisions, guidelines and procedures. Use for Hivex adoption, documentation migration, PRDs, glossaries, ADRs, or recording durable project knowledge.
4
+ ---
5
+
6
+ # Maintain the project's knowledge
7
+
8
+ Start with the project's documentation map, relevant sources and current owner decisions. Markdown owns intent and reasons; the graph helps recover them. Update the document that already owns the topic and scope. Create another only for a distinct purpose.
9
+
10
+ ## Adopt the foundation
11
+
12
+ Use the installed `hivex init` when available to prepare missing documents and configuration. The CLI scaffolds files; the principal agent completes their meaning. Read its report before continuing. Do not invent a project's vision, requirements or domain terms to fill a template.
13
+
14
+ Prefer migration to Hivex's standard structure when reasonably possible, preserving useful content, history, authority and links. Keep knowledge at its monorepo, package or module scope. Inspect existing instructions and source selection before moving files; when graph sources move, use the supported `hivex snapshot relocate` operation and normal incremental maintenance.
15
+
16
+ Complete the PRD and glossary from existing evidence and the owner. Ask only for essential open decisions. Keep unresolved sections explicitly provisional, and finish meaningful content before spending calls to index empty scaffolding.
17
+
18
+ Use the foundation [document templates](../hivex/assets/project/docs/README.md) as starting material. Apply the project's own product, stack and operating details; do not import another repository's identities, host paths or historical authorizations.
19
+
20
+ ## Give each document a purpose
21
+
22
+ - PRD: why the project exists, who it serves, its vision, intended outcomes and scope.
23
+ - CONTEXT: agreed domain terms with concise definitions; resolve ambiguity without adding a generic programming glossary.
24
+ - ADR: a decision and its rationale, scope, alternatives or exceptions when they matter to future work.
25
+ - Guideline: maintained rules for ongoing work.
26
+ - Procedure: enough context, steps and verification to perform a particular operation. Add prerequisites or recovery details when they are relevant.
27
+
28
+ Keep rules with their conditions and exceptions. An accepted status or a historical quotation does not settle a later replacement. When a decision changes, make the change and history traceable; move replaced detail to an archive when that helps keep the current authority usable.
29
+
30
+ ## Keep AGENTS.md lean
31
+
32
+ Follow the open AGENTS.md convention with a consistent small entrypoint: orientation and knowledge pointers, development/verification guidance, and project-specific constraints only when needed. The [foundation entrypoint](../hivex/assets/project/AGENTS.md) provides the starting shape.
33
+
34
+ Do not duplicate the PRD, glossary, guidelines or skills. A pointer should say when its target matters, not require every document on every task. Add local instructions only for real scope-specific needs. Use no arbitrary line-count gate.
35
+
36
+ After documentation changes, check affected links and source selection. Use Hivex's installed maintenance and snapshot capabilities when knowledge changes, preserving existing work and accounting. Check the relevant sources before treating a graph warning as a new product decision.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: hivex-git
3
+ description: Manage issue triage, execution tickets, branches, commits, pull requests, CI follow-through and merge conflicts under the project's conventions and existing authorization.
4
+ ---
5
+
6
+ # Keep work and Git coherent
7
+
8
+ Read the repository's tracker and Git conventions, relevant issue and current working state. Preserve unrelated work. Use the configured tracker and native Git capabilities; do not introduce an orchestration framework to coordinate ordinary changes.
9
+
10
+ ## Triage and plan execution
11
+
12
+ Reuse an existing issue when its scope fits. Capture a clear outcome, boundaries and useful acceptance evidence. Split work only when independent results or actual dependencies make it easier to execute. Read-only retrieval does not need a new issue.
13
+
14
+ Use the project's triage guide. For an adopter without one, the [foundation triage guide](../hivex/assets/project/docs/guidelines/triage-labels.md) defines the baseline. Readiness, expected owner involvement, dependencies and risk are different dimensions; none selects a model or grants permission.
15
+
16
+ When adopting or aligning labels, use the [common catalogue](assets/labels.json) as the starting set and compare the live catalogue with the documented meaning. Preserve useful project-specific areas and reconcile aliases without losing issue classification. The shared names `epic`, `research`, `prototype` and `decision` describe work independently of a skill. The catalogue also identifies known legacy aliases. If a replacement label already exists, transfer useful issue classification before retiring the alias; do not discard dependencies or change issue scope. Retire a generic task label only when the remaining labels and issue retain its useful meaning.
17
+
18
+ Use native blocking/sub-issue relationships when they help coordination. Do not create a decision-map hierarchy for already defined work or declare something ready merely because a label is present.
19
+
20
+ ## Commit and open a PR
21
+
22
+ Start a coherent branch from the current integration branch, following the project's naming conventions. Use its commit format and language; Conventional Commits are a useful default. Check the diff and the relevant verification before publishing the branch.
23
+
24
+ Keep the PR focused and linked to its owning issue. Lead with the concrete problem and resulting behavior, then the validation and material limits. Use a structured body argument or body file for multiline text. Follow the project's readiness convention for drafts.
25
+
26
+ Track CI to an actual result. Fix demonstrated problems within scope, and preserve an honest distinction between failure, omission and success. Confirm that the independent review is current and uses the implementation agent's model and effort. Reuse a valid completed review instead of starting another; do not infer approval from an automated knowledge report.
27
+
28
+ ## Integrate and clean up
29
+
30
+ Merge when the required checks and review pass and the owner's existing authorization covers the action. Do not ask for the same authorization again; if a tool blocks an otherwise authorized action, explain the actual blocker and prepare the concrete result before asking for what is missing.
31
+
32
+ When resolving conflicts, read both changes and their intent, preserve needed behavior and run the checks affected by the resolution. Do not choose one side blindly or overwrite unrelated work.
33
+
34
+ Preserve shared history and avoid direct integration-branch pushes or force pushes. After integration, update the appropriate checkout safely.
35
+
36
+ ## Finish the branch lifecycle
37
+
38
+ Clean up the local and remote branches and worktrees belonging to completed work. For implementation work, establish that the intended changes were integrated. Research, evidence and prototype branches may have a different end state: preserve their useful results and required history in project documentation or an appropriate archive before retiring a completed branch.
39
+
40
+ Keep unfinished work, including research, evidence and prototypes that have not reached their intended outcome. Branch age, absence of a PR or absence of an open issue is not enough to establish completion. Inspect the associated work and its disposition; leave uncertain or unrelated branches intact instead of treating cleanup as a repository-wide purge.
41
+
42
+ Do not discard unmerged work merely to bypass a Git deletion refusal. Establish that it is integrated, its needed results/history are preserved, or discarding it is covered by the owner's explicit authorization. Preserve knowledge and required evidence before cleaning local execution state.
@@ -0,0 +1,152 @@
1
+ {
2
+ "labels": [
3
+ {
4
+ "name": "needs-triage",
5
+ "color": "d4c5f9",
6
+ "description": "The issue needs evaluation."
7
+ },
8
+ {
9
+ "name": "needs-info",
10
+ "color": "fbca04",
11
+ "description": "Essential information is missing."
12
+ },
13
+ {
14
+ "name": "ready-for-agent",
15
+ "color": "2ea44f",
16
+ "description": "Defined enough for an agent to begin; later decisions may still arise."
17
+ },
18
+ {
19
+ "name": "ready-for-human",
20
+ "color": "1d76db",
21
+ "description": "The work requires human implementation."
22
+ },
23
+ {
24
+ "name": "wontfix",
25
+ "color": "ffffff",
26
+ "description": "This issue will not be actioned."
27
+ },
28
+ {
29
+ "name": "AFK",
30
+ "color": "1a7f37",
31
+ "description": "Can finish without further owner participation; not a permission or model choice."
32
+ },
33
+ {
34
+ "name": "HITL",
35
+ "color": "0052cc",
36
+ "description": "Owner participation is expected before completion; not a model choice."
37
+ },
38
+ {
39
+ "name": "blocked",
40
+ "color": "e11d21",
41
+ "description": "Blocked by a dependency or unresolved decision."
42
+ },
43
+ {
44
+ "name": "deferred",
45
+ "color": "fbca04",
46
+ "description": "Decided, but intentionally not scheduled."
47
+ },
48
+ {
49
+ "name": "high-risk",
50
+ "color": "b60205",
51
+ "description": "Consequential change requiring particular review attention."
52
+ },
53
+ {
54
+ "name": "bug",
55
+ "color": "d73a4a",
56
+ "description": "Supported behavior is not working correctly."
57
+ },
58
+ {
59
+ "name": "enhancement",
60
+ "color": "a2eeef",
61
+ "description": "New or improved capability."
62
+ },
63
+ {
64
+ "name": "documentation",
65
+ "color": "0075ca",
66
+ "description": "Project documentation work."
67
+ },
68
+ {
69
+ "name": "refactor",
70
+ "color": "5319e7",
71
+ "description": "Code or structure changes preserving intended behavior."
72
+ },
73
+ {
74
+ "name": "testing",
75
+ "color": "0e8a16",
76
+ "description": "Test infrastructure or useful behavior coverage."
77
+ },
78
+ {
79
+ "name": "architecture",
80
+ "color": "0e8a16",
81
+ "description": "Domain model or architectural decisions."
82
+ },
83
+ {
84
+ "name": "security",
85
+ "color": "b60205",
86
+ "description": "Security findings or hardening."
87
+ },
88
+ {
89
+ "name": "performance",
90
+ "color": "d93f0b",
91
+ "description": "Performance, resource use or caching."
92
+ },
93
+ {
94
+ "name": "ci",
95
+ "color": "0366d6",
96
+ "description": "CI, build tooling or repository configuration."
97
+ },
98
+ {
99
+ "name": "ux/ui",
100
+ "color": "d4c5f9",
101
+ "description": "User-facing experience or interface behavior."
102
+ },
103
+ {
104
+ "name": "epic",
105
+ "color": "3e2f8c",
106
+ "description": "Coherent parent work tracking related child issues."
107
+ },
108
+ {
109
+ "name": "research",
110
+ "color": "0e8a16",
111
+ "description": "Investigate facts needed for a decision."
112
+ },
113
+ {
114
+ "name": "prototype",
115
+ "color": "fbca04",
116
+ "description": "A bounded experiment to resolve a design question."
117
+ },
118
+ {
119
+ "name": "decision",
120
+ "color": "d93f0b",
121
+ "description": "An unresolved product or engineering decision."
122
+ },
123
+ {
124
+ "name": "severity: critical",
125
+ "color": "b60205",
126
+ "description": "Security finding severity: critical."
127
+ },
128
+ {
129
+ "name": "severity: high",
130
+ "color": "d93f0b",
131
+ "description": "Security finding severity: high."
132
+ },
133
+ {
134
+ "name": "severity: moderate",
135
+ "color": "fbca04",
136
+ "description": "Security finding severity: moderate."
137
+ },
138
+ {
139
+ "name": "severity: low",
140
+ "color": "c2e0c6",
141
+ "description": "Security finding severity: low."
142
+ }
143
+ ],
144
+ "legacyAliases": {
145
+ "wayfinder:map": "epic",
146
+ "wayfinder:research": "research",
147
+ "wayfinder:prototype": "prototype",
148
+ "wayfinder:grilling": "decision",
149
+ "risk: high": "high-risk"
150
+ },
151
+ "retired": ["wayfinder:task"]
152
+ }
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: hivex-implement
3
+ description: Implement a defined change, diagnose a bug, or refactor code with focused verification and review. Use when work is ready to execute; use design support only for decisions that remain open.
4
+ ---
5
+
6
+ # Implement the intended change
7
+
8
+ Recover the request, the owning issue when present, and relevant project decisions. Use Hivex's local search, neighbors and sources as needed. Carry settled scope forward; raise a question only when the evidence leaves a consequential decision open.
9
+
10
+ Follow the repository's engineering guideline, domain language and actual module boundaries. Prefer a direct solution, existing capability or standard library before adding layers, dependencies or speculative flexibility. Keep responsibility for the integrated result when delegating suitable bounded subtasks.
11
+
12
+ For a bug, establish the failing behavior and inspect the relevant path before changing code. Use observations to distinguish causes. Keep a reproduction or regression test when its value justifies its maintenance; do not accumulate broad diagnostics or unrelated fixes.
13
+
14
+ ## Choose useful verification
15
+
16
+ Prioritize critical flows, stable rules and regressions. Use TDD when the behavior is sufficiently defined and it helps the task, rather than as a universal sequence. Explore or clarify open behavior before locking assumptions into tests.
17
+
18
+ Test observable results through meaningful interfaces with independent expected values. Avoid tests coupled to private helpers or arbitrary structure. Investigate a failure against the intended contract; do not mechanically preserve a bad test or change a test merely to make it pass.
19
+
20
+ Run the repository checks that apply to the changed surfaces. Broaden checks when a change, failure or unresolved concern warrants it. Report actual results and material limits without repeating checks that remain valid.
21
+
22
+ Update the owning Markdown for durable decisions, keeping conditions and exceptions. Use `hivex-document` when that work needs documentation support.
23
+
24
+ ## Finish the work
25
+
26
+ Use one independent `hivex-review` pass by default. Supply the intended scope, relevant authorities and the implementation agent's actual model and effort so the reviewer matches them. Add another review only for a concrete reason. Resolve findings on their merits.
27
+
28
+ Use `hivex-git` to complete the authorized commit, PR and CI work. Preserve existing owner authorization and make any remaining dependency or required user action explicit.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: hivex-review
3
+ description: Independently review a change or pull request for intended scope, correctness and project standards, with relevant decision dependencies and exceptions. Use for implementation review or a review requested against a commit, branch or diff.
4
+ ---
5
+
6
+ # Review the actual change
7
+
8
+ Establish the comparison base, reviewed revision and intended outcome. Read the relevant issue or specification and affected project authorities. Review the diff and the context necessary to understand its behavior; reuse prior findings and verification that still apply.
9
+
10
+ Use one independent reviewer by default. If you are already assigned as that reviewer, perform the review directly; do not spawn another review pass. Its model and reasoning effort must match the implementation agent's profile. Pass the profile explicitly when defaults differ and verify the effective profile through the available tools. Do not substitute the knowledge model for this review. If independent review cannot be performed, say what remains unreviewed.
11
+
12
+ ## Check the whole result
13
+
14
+ Assess the intended scope, behavior, regressions and the standards relevant to this repository. Focus on concrete problems and simpler solutions that materially improve correctness or maintenance. Do not manufacture findings from stylistic preferences already handled by the configured tools.
15
+
16
+ Use Hivex's local retrieval and source reading for decisions, dependencies, exceptions and replacements. Ask for model-assisted knowledge review only when it contributes information the review needs. Confirm its findings against the actual sources and code; it is support for the principal review, not a replacement.
17
+
18
+ Evaluate whether the checks protect meaningful behavior and whether their evidence covers the change. Do not require TDD, a test for every edit, or implementation-shaped assertions. Distinguish an unverified outcome from a demonstrated defect.
19
+
20
+ ## Report and follow through
21
+
22
+ Report actionable findings with their location, impact and supporting evidence. Explain technical details clearly when needed to understand the problem. State a clean result when there are no justified findings, together with material verification limits.
23
+
24
+ A later change invalidates only the affected conclusions. Review that delta instead of repeating the entire review without cause. Add another independent pass when concrete risk or findings justify it, preserving the required model/effort profile.
25
+
26
+ Resolve adverse findings by evidence or correction, not repeated attempts to obtain approval. A review result does not grant merge or publication permission; existing owner authorization and repository requirements still govern those actions.
package/src/cli.ts CHANGED
@@ -3,6 +3,7 @@ import { checkReview } from './review.ts';
3
3
  import { documentCommand } from './documents.ts';
4
4
  import { knowledgeMaintenance } from './knowledge-maintenance.ts';
5
5
  import { knowledgeCommand } from './knowledge.ts';
6
+ import { projectInitializationCommand } from './project-initialization.ts';
6
7
  import { snapshotCommand } from './snapshot-command.ts';
7
8
  import { diagnostic } from './cli/diagnostic.ts';
8
9
 
@@ -70,6 +71,7 @@ const main = async (input: string[]) => {
70
71
  usage: 'snapshot export | import | relocate <from> <to> [--root <project>]',
71
72
  },
72
73
  { modelCalls: 0, name: 'status', usage: 'status [--root <project>]' },
74
+ { modelCalls: 0, name: 'init', usage: 'init [--root <project>]' },
73
75
  ],
74
76
  configuration:
75
77
  'Optional hivex.json with include/exclude/history relative Markdown globs; history sources are focused evidence.',
@@ -87,6 +89,9 @@ const main = async (input: string[]) => {
87
89
  if (input[0] === 'snapshot') {
88
90
  return snapshotCommand(input);
89
91
  }
92
+ if (input[0] === 'init') {
93
+ return projectInitializationCommand(input);
94
+ }
90
95
  if (input[0] === 'recover' || input[0] === 'prune') {
91
96
  return knowledgeMaintenance(input);
92
97
  }