You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: add function list table plan and consolidate guides
Finalize feature design with merging hook pattern, update
features.json steps, create implementation plan 002, and
add raw deployer PoC note to design doc. Consolidate
duplicate commit message rules into a single guide with
authorship modes.
Add page/component/hook rules to ARCHITECTURE.md. Clarify
one-at-a-time TDD in TESTING.md. Update init-session to
hand off to Feature Development Sequence. Log Cypress
sandbox blocker in agent-struggles.json.
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Stanislav Jakuschevskij <sjakusch@redhat.com>
Copy file name to clipboardExpand all lines: .claude/commands/init-session.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,4 +25,4 @@ Execute the startup sequence from `docs/WORKFLOW.md`. AGENTS.md is always in con
25
25
26
26
6.**Run tests** — run `yarn test` and verify app is healthy.
27
27
28
-
7.**Wait** — tell the user you're oriented, report the picked feature, and ask what they'd like to work on. Do NOT start any work autonomously.
28
+
7.**Wait** — tell the user you're oriented, report the picked feature and which step of the Feature Development Sequence you'd start at. When the user says to proceed, follow the Feature Development Sequence in `docs/WORKFLOW.md` step by step. Do NOT start any work autonomously.
- Never stage files that likely contain secrets (.env, credentials, etc.)
21
21
- Skip if everything is already staged
22
22
23
-
3.**Update progress log** — read `docs/claude-progress.txt`, then prepend a new entry at the top (after the header line) following the format documented in `AGENTS.md` under `claude-progress.txt`.
23
+
3.**Update progress log** — read `docs/claude-progress.txt`, then prepend a new entry at the top (after the header line) following the format in `docs/references/claude-progress-readme.md`.
24
24
- Analyze the staged diff to determine what was done
25
25
- Use today's actual date
26
26
- Be concise but complete
27
27
- Stage the updated file: `git add docs/claude-progress.txt`
28
28
29
-
4.**Draft and commit** — follow all commit message rules from `.claude/commands/commit-user.md`. Use a HEREDOC and append a Co-Authored-By trailer:
29
+
4.**Migrate blockers** — if the progress entry you just wrote has a `Blockers:` line that is NOT `None`:
30
+
- Read `docs/agent-struggles.json`
31
+
- For each blocker, append an entry:
32
+
33
+
```json
34
+
{
35
+
"date": "<today>",
36
+
"description": "<blocker text from progress entry>",
37
+
"cause": "<your best short assessment>",
38
+
"suggestion": "<what would fix or prevent this>",
39
+
"resolved": false
40
+
}
41
+
```
42
+
43
+
- Stage: `git add docs/agent-struggles.json`
44
+
45
+
5. **Draft and commit** — follow all rules from `docs/references/commit-message-guide.md`. Determine authorship mode (tandem vs autonomous) from the guide. Use a HEREDOC:
46
+
30
47
```bash
31
48
git commit -m "$(cat <<'EOF'
32
49
<type>: <subject>
33
50
34
51
<body>
35
52
36
-
Co-Authored-By: Claude <noreply@anthropic.com>
53
+
<authorship trailer>
37
54
EOF
38
55
)"
39
56
```
40
57
41
-
5. **Verify** — run `git status` and `git log --oneline -1` to confirm success.
58
+
6.**Verify** — run `git status` and `git log --oneline -1` to confirm success.
Copy file name to clipboardExpand all lines: docs/ARCHITECTURE.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,14 @@ Arrows mean "imports / depends on."
39
39
- Services never import Components or Views
40
40
- No circular dependencies
41
41
42
+
## Page / Component / Hook Rules
43
+
44
+
**Components are simple** — they receive data via props, render it, and call callbacks to return data to the parent (or use context). No logic at the top of a component.
45
+
46
+
**Pages are smart** — they use central hooks (e.g. `useClusterService`, `useSourceControl`) to fetch, prepare, and transform all data needed for downstream components.
47
+
48
+
**Extract logic into hooks** — if a page or component has any logic (state management, data transformation, side effects), extract it into a co-named hook: `FunctionTable.tsx` → `useFunctionTable.ts`, `FunctionsListPage.tsx` → `useFunctionsListPage.ts`. If there is no logic, no hook is needed.
49
+
42
50
## Architectural Guidance
43
51
44
52
- PatternFly components preferred over custom HTML
Copy file name to clipboardExpand all lines: docs/WORKFLOW.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ Every session, before doing any work:
16
16
17
17
After [Startup Sequence](#startup-sequence), work through the picked feature:
18
18
19
-
1.**Plan** — read `docs/ARCHITECTURE.md` + `docs/STYLEGUIDE.md` + `docs/TESTING.md`, then create implementation plan → `docs/plans/active/<incremented-number>-feature-<short-name>.md`
19
+
1.**Plan** — read `docs/ARCHITECTURE.md` + `docs/STYLEGUIDE.md` + `docs/TESTING.md`, then use `/brainstorming` to design the chosen feature from `docs/features.json`, then use `/writing-plans` to create implementation plan → `docs/plans/active/<NNN>-<type>-<short-name>.md`
20
20
2.**Branch** — create feature branch per [Branching](#branching) convention
21
21
3.**Implement** — using `/executing-plans` skill
22
22
4.**Review** — code review using `/requesting-code-review` skill, fix found issues
@@ -28,22 +28,22 @@ After [Startup Sequence](#startup-sequence), work through the picked feature:
28
28
29
29
## Branching
30
30
31
-
Create a feature branch per plan: `<NNN>-<type>-<short-name>` where `<NNN>` matches the plan number and `<type>` the conventional commit type as per our [Git Commit Guide](references/commit-message-agent-readme.md#conventional-commits). Example: `001-feat-function-list-empty-state`.
31
+
Create a feature branch per plan: `<NNN>-<type>-<short-name>` where `<NNN>` matches the plan number and `<type>` the conventional commit type as per our [Git Commit Guide](references/commit-message-guide.md#conventional-commits). Example: `001-feat-function-list-empty-state`. If we're on a feature branch already do nothing.
32
32
33
33
## Pull Requests
34
34
35
35
Open PRs via `gh pr create` using the template at `.github/pull_request_template.md`.
36
36
37
37
**Title format:**`<Type>: <Sentence ending with a period.>` — capitalize the type and the first word, end with a period. Example: `Feat: Add function list page with empty state.`
38
38
39
-
Types are the same as [conventional commits](references/commit-message-agent-readme.md#conventional-commits) but capitalized.
39
+
Types are the same as [conventional commits](references/commit-message-guide.md#conventional-commits) but capitalized.
40
40
41
41
## Session Rules
42
42
43
43
- One feature at a time
44
44
- Clean state at end (code suitable for merging to main)
45
45
- Update [`docs/claude-progress.txt`](references/claude-progress-readme.md) before session ends
46
-
- Commit work to git before ending — follow [`docs/references/commit-message-agent-readme.md`](references/commit-message-agent-readme.md) strictly
46
+
- Commit work to git before ending — follow [`docs/references/commit-message-guide.md`](references/commit-message-guide.md) strictly
"description": "Playwright browser plugin cannot execute inside nono sandbox — browser binary not found or npm cache not accessible",
5
+
"cause": "nono sandbox restricts access to Playwright browser binaries",
6
+
"suggestion": "Either pre-install Playwright browsers in the sandbox profile or add browser binary path to nono allow-list",
7
+
"resolved": true
8
+
},
9
+
{
10
+
"date": "2026-04-01",
11
+
"description": "Concurrent Claude sessions break nono sandbox — EACCES on .claude.json after external session atomically writes it",
12
+
"cause": "Landlock grants are inode-based; atomic writes (write temp + rename) replace the inode, invalidating the sandbox grant",
13
+
"suggestion": "Avoid running Claude outside sandbox while sandbox is active, or symlink .claude.json into $HOME/.claude/ directory which has full access",
14
+
"resolved": false
15
+
},
16
+
{
17
+
"date": "2026-04-01",
18
+
"description": "Cypress cannot run inside nono sandbox — EACCES on ~/.config/Cypress and /run/user/ dconf",
19
+
"cause": "Cypress needs write access to ~/.config/Cypress and /run/user/<uid>/dconf, neither of which are in the nono allow-list",
20
+
"suggestion": "Add ~/.config/Cypress (readwrite) and /run/user (readwrite) to the nono sandbox profile, or run Cypress outside the sandbox",
- Added session-commit step to migrate blockers from progress log to agent-struggles.json
11
+
- Consolidated commit message docs: single source of truth in commit-message-guide.md, slimmed commit-user.md and session-commit.md, deleted commit-message-agent-readme.md
12
+
- Created planning-guide.md (plans outline test cases, not full code)
13
+
- Added page/component/hook rules to ARCHITECTURE.md
14
+
- Clarified TDD approach in TESTING.md (one test at a time)
15
+
- Simplified 002-function-list-table.md plan (removed all code, kept test case outlines)
16
+
Left off: Execute function list table plan. Nono Landlock inode issue with .claude.json (concurrent sessions cause EACCES)
17
+
Blockers: Concurrent Claude sessions break nono sandbox — Landlock inode grants invalidated when external session atomically writes .claude.json
18
+
19
+
---
20
+
## 2026-03-31 | Session: Function list table design + nono sandbox setup
21
+
Worked on: Designed function list table feature, set up nono sandbox for autonomous development
22
+
Completed:
23
+
- Brainstormed and finalized feature design (table with name, runtime, status, url, replicas, actions columns)
24
+
- Designed useFunctionsList merging hook (repos + deployments → FunctionListItem[])
25
+
- Updated features.json with refined feature steps
26
+
- Updated design doc with merging hook pattern and raw deployer PoC note
27
+
- Created implementation plan (docs/plans/active/002-function-list-table.md)
28
+
- Captured real K8s deployment response (.tmp/k8s-deployment-response.json)
29
+
- Captured real GitHub search response (.tmp/gh-search-response.json)
30
+
- Created fine-grained GitHub PAT scoped to func-console (read + PR write)
31
+
- Set up nono sandbox profile (claude-code-func-console) with credential injection
32
+
- Verified: gh api, yarn test, plugin loading all work in sandbox
0 commit comments